private Expression FetchModelMethod(string name, IList <Expression> args) { var signatures = ContextType.GetRuntimeMethods() .Where(mi => name.Equals(mi.Name) && mi.GetParameters().Length == args.Count) .ToList(); if (signatures.Count == 0) { return(null); } if (signatures.Count > 1) { throw new InvalidOperationException(string.Format("Function {0} accepting {1} arguments is ambiguous.", name, args.Count)); } return(CreateMethodCallExpression(ContextExpression, signatures.Single(), args)); }