code: private Type rewriteQuantifiers(Type t, boolean high, boolean rewriteTypeVars) {
          return new Rewriter(high, rewriteTypeVars).visit(t);
      }
docs: Rewrite all type variables (universal quantifiers) in the given
  type to wildcards (existential quantifiers).  This is used to
  determine if a cast is allowed.  For example, if high is true
  and {@code T <: Number}, then {@code List<T>} is rewritten to
  {@code List<?  extends Number>}.  Since {@code List<Integer> <:
  List<? extends Number>} a {@code List<T>} can be cast to {@code
  List<Integer>} with a warning.
  @param t a type
  @param high if true return an upper bound; otherwise a lower
  bound
  @param rewriteTypeVars only rewrite captured wildcards if false;
  otherwise rewrite all type variables
  @return the type rewritten with wildcards (existential
  quantifiers) only