code: public void setBounds(TypeVar t, List<Type> bounds, boolean allInterfaces) {
          t.bound = bounds.tail.isEmpty() ?
                  bounds.head :
                  makeIntersectionType(bounds, allInterfaces);
          t.rank_field = -1;
      }
docs: Set the bounds field of the given type variable to reflect a (possibly multiple) list of bounds.
  This does not cause symbol completion as an extra parameter indicates as to whether all bounds
  are interfaces - in which case the supertype is implicitly assumed to be 'Object'.
  
  @param t             a type variable
  @param bounds        the bounds, must be nonempty
  @param allInterfaces are all bounds interface types?