private static TaskCompletionSource<bool> Send(object sender, Type typeOfSender, string message, IArgumentsProxy argumentsProxy)
{
Argument.IsNotNull(() => sender);
Argument.IsNotNull(() => typeOfSender);
Argument.IsOfType(() => sender, typeOfSender);
Argument.IsNotNull(() => argumentsProxy);
var type = typeof(global::Xamarin.Forms.MessagingCenter);
//// TODO: Use reflection API instead but reflection API requires some fixes.
var methodInfo = type.GetRuntimeMethods().FirstOrDefault(info => info.Name == "Send" && info.GetGenericArguments().Length == 2 && info.GetParameters().Length == 3);
var makeGenericMethod = methodInfo.MakeGenericMethod(typeof(Page), argumentsProxy.InternalType);
makeGenericMethod.Invoke(type, new[] { sender, message, argumentsProxy.Object });
return argumentsProxy.Result;
}