code: public Type addArguments(List<Type> argTypes) {
      Type t = this;
      for (Type a : argTypes) {
        t = t.addArgument(a);
      }
      return t;
    }
docs: Adds a list of argument types to this type. The
  last argument in the list is the first argument
  accepted by the returned type. For example, if
  the list is [a, b, c], the resulting type is
  (c, (b, (a, this)))
  
  @param argTypes
  @return