code: private static Object[] spread(Object[] args, boolean spreadCall) {
          if (!spreadCall) return args;
          Object[] normalArguments = (Object[]) args[1];
          Object[] ret = new Object[normalArguments.length+1];
          ret[0] = args[0];
          System.arraycopy(normalArguments, 0, ret, 1, ret.length-1);
          return ret;
      }
docs: Helper method to transform the given arguments, consisting of the receiver
  and the actual arguments in an Object[], into a new Object[] consisting
  of the receiver and the arguments directly. Before the size of args was
  always 2, the returned Object[] will have a size of 1+n, where n is the
  number arguments.