public Class getClass(Symbol symbol) { Object value = classes.get(symbol); if (value != null) return (Class)value; Class mirror = getClass0(symbol); assert Debug.log("java mirror", Debug.show(symbol) + " -> " + mirror); classes.put(symbol, mirror); return mirror;
public Class getClass(Type type) { switch (type) {  case UnboxedType(int kind): return getClass(kind);  case UnboxedArrayType(Type component): return getArray(getClass(component));  case TypeRef(_, Symbol symbol, _): return getClass(symbol);  default: throw Debug.abort("illegal type", type); }
    public Class getClass(Symbol symbol) {        Object value = classes.get(symbol);        if (value != null) return (Class)value;        Class mirror = getClass0(symbol);        assert Debug.log("java mirror", Debug.show(symbol) + " -> " + mirror);        classes.put(symbol, mirror);        return mirror;    }