return printTypes(alttypes, " <and> ", user);
return printTypes(alttypes, " <and> ");
    public SymbolTablePrinter printCommonPart(Type type, Symbol user) {        switch (type) {	case ErrorType:	    print("<error>");            return this;	case AnyType:	    print("<any type>");            return this;	case NoType:	    print("<notype>");            return this;	case ThisType(Symbol sym):            if (sym == Symbol.NONE) print("<local>.this");            if ((sym.isAnonymousClass() || sym.isCompoundSym()) && !global.debug) 		print("this");            printUsedSymbolName(sym, user);            print(".this"); // vincent            return this;	case TypeRef(Type pre, Symbol sym, Type[] args):	    if (!global.debug) {                if (type.isFunctionType()) {                    printFunctionType(args);		    return this;		}		if (sym.isAnonymousClass() || sym.isCompoundSym())                    printTemplateType(pre.memberInfo(sym).parents());            }            printPrefix(pre, sym);            printUsedSymbolName(sym, user);	    if (args.length != 0) {                print('[');                printTypes(args, ",", user);                print(']');            }            return this;	case SingleType(Type pre, Symbol sym):            printPrefix(pre, sym);            printUsedSymbolName(sym, user);            return this;	case ConstantType(Type base, Object value):	    printType(base, user);	    print("(");	    print(value.toString());	    print(")");	    return this;	case CompoundType(Type[] parts, Scope members):	    printTypes(parts," with ", user);            space();            return printScope(members, true); // vincent	case MethodType(_, _):	    return printType0(type, user);	case PolyType(_, _):	    return printType0(type, user);	case OverloadedType(Symbol[] alts, Type[] alttypes):            return printTypes(alttypes, " <and> ", user);	case TypeVar(Type origin, Constraint constr):            printType(origin, user);            print("?");            return this;	case UnboxedType(int kind):	    print(type.unboxedName(kind).toString());            return this;	case UnboxedArrayType(Type elemtp):	    printType(elemtp, user);            print("[]");            return this;	case LazyType():            if (!global.debug) print("?");            String classname = type.getClass().getName();            print("<lazy type ").print(classname).print(">");            return this;	default:            String classname = type.getClass().getName();	    print("<unknown type ").print(classname).print(">");            return this;        }    }