assert !modules.containsKey(clasz): Debug.show(sym); modules.put(clasz, sym); }
    private void putSymbol(Symbol sym) {	if (putEntry(sym)) {	    if (debug) System.out.println("put " + sym);	    if (isLocal(sym)) {		putEntry(sym.name);		putSymbol(sym.isConstructor() ? sym.constructorClass() : sym.owner());		switch (sym.kind) {		case TYPE:		    if (sym.isViewBounded()) putType(sym.vuBound());		    else putType(sym.info());		    putType(sym.loBound());		    break;		case ALIAS:		    putType(sym.info());		    putSymbol(sym.allConstructors());		    break;		case CLASS:		    putType(sym.info());		    putType(sym.typeOfThis());		    putSymbol(sym.allConstructors());		    for (Scope.SymbolIterator it = sym.members().iterator();			 it.hasNext();)			putSymbol(it.next());		    break;		case VAL:		    putType(sym.info());		    if (sym.isConstructor() && 			sym == sym.constructorClass().allConstructors())			putSymbol(sym.constructorClass());		    else if (sym.isModule()) {                        Symbol clasz = sym.moduleClass();			putSymbol(sym.moduleClass());                        assert !modules.containsKey(clasz): Debug.show(sym);                        modules.put(clasz, sym);                    }		    break;		default:		    throw new ApplicationError();		}	    } else if (sym.kind != NONE) {		putEntry(sym.isModuleClass() || sym.isRoot() ? sym.name.toTermName() : sym.name);		if (!sym.owner().isRoot())		    putSymbol(sym.owner());	    }	}    }