@Override
        public Type visitTypeVar(TypeVar t, Void s) {
            if (rewriteTypeVars) {
                Type bound = high ?
                    (t.bound.contains(t) ?
                        erasure(t.bound) :
                        visit(t.bound)) :
                    syms.botType;
                return rewriteAsWildcardType(bound, t);
            }
            else
                return t;
        }