public static bool Query<T>(this object o, string message, out T data, params object[] parameters)
{
var methodInfo = o.GetType().GetMethod(message, ReflectionLibrary.INSTANCE_MEMBER_BINDING_FLAGS, null,
parameters.GetTypeArray(), null);
var valid = methodInfo != null && methodInfo.ReturnType == typeof(T);
data = valid ? (T) methodInfo.Invoke(o, parameters) : default;
return valid;
}