return null;
throw global.fail("invalid type ", tp);
    protected Type typeStoJ(scalac.symtab.Type tp) {        switch (tp) {        case UnboxedType(TypeTags.BYTE):            return Type.BYTE;        case UnboxedType(TypeTags.CHAR):            return Type.CHAR;        case UnboxedType(TypeTags.SHORT):            return Type.SHORT;        case UnboxedType(TypeTags.INT):            return Type.INT;        case UnboxedType(TypeTags.LONG):            return Type.LONG;        case UnboxedType(TypeTags.FLOAT):            return Type.FLOAT;        case UnboxedType(TypeTags.DOUBLE):            return Type.DOUBLE;        case UnboxedType(TypeTags.BOOLEAN):            return Type.BOOLEAN;        case UnboxedType(TypeTags.UNIT):            return Type.VOID;        case UnboxedType(TypeTags.STRING):            return Type.STRING;        case UnboxedArrayType(scalac.symtab.Type elementType):            return new ArrayType(typeStoJ(elementType), 1);        default: {            Symbol sym = tp.symbol();            if (sym == Symbol.NONE)                return null;            else if (typeMap.containsKey(sym))                return (Type)typeMap.get(sym);            else {                Type jTp = new ObjectType(javaName(sym));                typeMap.put(sym, jTp);                return jTp;            }        }        }    }