docs: protected final String checkArguments(Properties args, RequestType type) {
      // Why the following lines duplicate lines from Request#92 - handling query?
      // reset all arguments
      for (Argument arg: _arguments)
        arg.reset();
      // return query if in query mode
      if (type == RequestType.query)
        return buildQuery(args,type);
  
      /*
      // Check that for each actual input argument from the user, there is some
      // request argument that this method is expecting.
      //*/
      if (H2O.OPT_ARGS.check_rest_params && !(this instanceof GridSearch) && !(this instanceof HTTP500)) {
        Enumeration en = args.propertyNames();
        while (en.hasMoreElements()) {
          boolean found = false;
          String key = (String) en.nextElement();
          for (Argument arg: _arguments) {
            if (arg._name.equals(key)) {
              found = true;
              break;
            }
          }
          if (!found) {
            return jsonError("Request specifies the argument '"+key+"' but it is not a valid parameter for this query " + this.getClass().getName()).toString();
          }
        }
      }
  
      // check the arguments now
      for (Argument arg: _arguments) {
        if (!arg.disabled()) {
          try {
            arg.check(RequestQueries.this, args.getProperty(arg._name,""));
            queryArgumentValueSet(arg, args);
          } catch( IllegalArgumentException e ) {
            if (type == RequestType.json)
              return jsonError("Argument '"+arg._name+"' error: "+e.getMessage()).toString();
            else
              return buildQuery(args,type);
          }
        }
      }
      return null;
    }