putSymbol(Symbol.NONE);
    private void putType(Type tp) {	if (putEntry(tp)) {	    switch (tp) {	    case NoType:		break;	    case NoPrefix:		break;	    case ThisType(Symbol sym):		putSymbol(sym);		break;	    case SingleType(Type pre, Symbol sym):		putType(pre);		putSymbol(sym);		break;	    case ConstantType(Type base, AConstant value):		putType(base);                putConstant(value);		break;	    case TypeRef(Type pre, Symbol sym, Type[] args):		putType(pre);		putSymbol(sym);		putTypes(args);		break;	    case CompoundType(Type[] parents, Scope members):                putSymbol(tp.symbol());		putTypes(parents);		break;	    case MethodType(Symbol[] vparams, Type result):		putType(result);		for (int i = 0; i < vparams.length; i++) {		    Type ptype = vparams[i].type();		    putType(ptype);		    int pflags = vparams[i].flags;		    if ((pflags & (REPEATED | DEF)) != 0)			putEntry(new FlagsAndType(encodeFlags(pflags), ptype));		}		break;	    case PolyType(Symbol[] tparams, Type result):		putType(result);		putSymbols(tparams);		break;	    case OverloadedType(Symbol[] alts, Type[] alttypes):		for (int i = 0; i < alts.length; i++) alts[i].flags |= ALTERNATIVE;		putSymbols(alts);		putTypes(alttypes);		break;	    default:		throw new ApplicationError();	    }	}    }