code: public static Request from(RequestBuilderFactory factory, MethodConfig mc, Object[] args) throws Exception {
          RequestBuilder builder = factory.create().addParams(mc.getExtraParams());
          for (int i = 0; i < mc.getParamCount(); i++) {
              Collection<Object> values = Objects.asCollection(args[i]);
              ParamConfig pc = mc.getParamConfig(i);
              if(containsOnlyNulls(values)) {
                  if(pc.getDefaultValue() != null) {
                      builder.addParam(pc);
                  }
              }else{
                  builder.addParam(pc, values);
              }
          }
          mc.getRequestInterceptor().beforeFire(builder, mc, args);
          return builder.build(mc);
      }
docs: <p>Creates a {@link org.codegist.crest.io.Request} from the given method config and user arguments.</p>
  <p>Argument array must match and reflects the {@link org.codegist.crest.config.MethodConfig#getParamCount()} and {@link org.codegist.crest.config.MethodConfig#getParamConfig(int)}.</p>
  <p>This method also calls the {@link org.codegist.crest.config.MethodConfig#getRequestInterceptor()} before building the request.</p>
  @param factory factory to use to build a {@link org.codegist.crest.io.RequestBuilder}
  @param mc current method config the given arguments refers to
  @param args arguments passed by the user to the rest interface
  @return a request ready to be executed
  @throws Exception Any exception thrown during the request building
  @see org.codegist.crest.io.Request
  @see org.codegist.crest.interceptor.RequestInterceptor
  @see org.codegist.crest.config.MethodConfig