Type getType(Symbol sym) { if (sym == null) return null; Type type = (Type) symbols2types.get(sym); if (type != null) return type; if (sym.isJava()) {  type = getType(sym.fullNameString()); } if (type == null) { final Symbol owner = sym.owner(); switch (sym.info()) { case CompoundType(_, _): if (sym.owner().isClass()) { Type outer = getType(sym.owner()); if (outer == null) throw new RuntimeException("Cannot find type: " + dumpSym(owner)); type = (Type) symbols2types.get(sym); if (type != null) return type; if (outer instanceof TypeBuilder) return createType(sym); String name = sym.nameString() + (sym.isModuleClass() ? "$" : "");  type = outer.GetNestedType(name); } else { String fullname = sym.type().symbol().fullNameString() + (sym.isModuleClass() ? "$" : ""); type = getType(fullname); } if (type == null) type = createType(sym); break;  case UnboxedArrayType(scalac.symtab.Type elemtp): type = getType(sym.info()); break;  default:  type = getType(sym.info()); } } assert type != null : "Unable to find type: " + dumpSym(sym);  map(sym, type); return type;
Type getType(String name) { return Type.GetType(name);
    Type getType(Symbol sym) {	if (sym == null) return null;	Type type = (Type) symbols2types.get(sym);	if (type != null)	    return type; 	if (sym.isJava()) {// 	if (sym.isExternal()) {	    type = getType(sym.fullNameString());	}	if (type == null) {	    final Symbol owner = sym.owner();	    switch (sym.info()) {	    case CompoundType(_, _):		if (sym.owner().isClass()) {		    Type outer = getType(sym.owner());		    if (outer == null)			throw new RuntimeException("Cannot find type: "						   + dumpSym(owner));		    type = (Type) symbols2types.get(sym);		    if (type != null)			return type;		    if (outer instanceof TypeBuilder)			return createType(sym);		    String name = sym.nameString()			+ (sym.isModuleClass() ? "$" : "");		    //log("getType: looking up nested type " + outer + "." + name);		    type = outer.GetNestedType(name);		} else {		    String fullname = sym.type().symbol().fullNameString() +			(sym.isModuleClass() ? "$" : "");		    type = getType(fullname);		}		if (type == null)		    type = createType(sym);		break;		 	    case UnboxedArrayType(scalac.symtab.Type elemtp):		type = getType(sym.info());		break;	    default:		//log("getType: Going through the type: " + dumpSym(sym));		type = getType(sym.info());	    }	}	assert type != null : "Unable to find type: " + dumpSym(sym);	//log("getType(): type = " + type);	map(sym, type);	return type;    }