code: public void setBounds(TypeVar t, List<Type> bounds) {
          setBounds(t, bounds, bounds.head.tsym.isInterface());
      }
docs: Same as {@link Types#setBounds(TypeVar, List, boolean)}, except that third parameter is computed directly,
  as follows: if all all bounds are interface types, the computed supertype is Object,otherwise
  the supertype is simply left null (in this case, the supertype is assumed to be the head of
  the bound list passed as second argument). Note that this check might cause a symbol completion.
  Hence, this version of setBounds may not be called during a classfile read.
  
  @param t         a type variable
  @param bounds    the bounds, must be nonempty