private bool IsApplicable(MethodData method, Expression[] args)
{
if (method._parameters.Length != args.Length) return false;
var promotedArgs = new Expression[args.Length];
for (int i = 0; i < args.Length; i++)
{
ParameterInfo pi = method._parameters[i];
if (pi.IsOut) return false;
Expression promoted = PromoteExpression(args[i], pi.ParameterType, false);
if (promoted == null) return false;
promotedArgs[i] = promoted;
}
method._args = promotedArgs;
return true;
}