internal override FunctionCallExpression Rewrite(XzaarExpression instance, IList <XzaarExpression> args)
        {
            Debug.Assert(instance != null);
            Debug.Assert(args == null || args.Count == arguments.Count);

            return(XzaarExpression.Call(instance, Method, args ?? arguments));
        }
        internal override FunctionCallExpression Rewrite(XzaarExpression instance, IList <XzaarExpression> args)
        {
            //Debug.Assert(instance != null);
            //Debug.Assert(args == null || args.Count == 3);

            if (args != null)
            {
                return(XzaarExpression.Call(instance, Method, args[0], args[1], args[2]));
            }
            return(XzaarExpression.Call(instance, Method, ReturnObject <XzaarExpression>(_arg0), _arg1, _arg2));
        }
 public static FunctionCallExpression Call(XzaarExpression instance, string methodName, XzaarType[] typeArguments, params XzaarExpression[] arguments)
 {
     if (instance == null)
     {
         throw new ArgumentNullException(nameof(instance));
     }
     if (methodName == null)
     {
         throw new ArgumentNullException(nameof(methodName));
     }
     if (arguments == null)
     {
         arguments = new XzaarExpression[0];
     }
     return(XzaarExpression.Call(instance, FindMethod(instance.Type, methodName, typeArguments, arguments), arguments));
 }