case ThisType(Symbol s): if (s == Symbol.NONE) { pre = sym.owner().enclClass().thisType(); tp = Type.typeRef(pre, sym, targs); }
case NoPrefix: pre = sym.owner().enclClass().thisType(); tp = Type.typeRef(pre, sym, targs);
        public Type apply(Type tp) {            switch (tp) {            case TypeRef(Type pre, Symbol sym, Type[] targs):                if (sym.kind == CLASS) {                    switch (pre) {                    case ThisType(Symbol s):                        if (s == Symbol.NONE) {                            pre = sym.owner().enclClass().thisType();                            tp = Type.typeRef(pre, sym, targs);                        }                    }                }                switch (pre) {                case ThisType(_):                    if (sym.kind == CLASS && 			sym.primaryConstructor().isUpdatedAt(LambdaLiftPhase.this)) {                        Symbol[] tparams = sym.primaryConstructor().nextInfo().typeParams();                        int i = tparams.length;                        while (i > 0 && (tparams[i-1].flags & SYNTHETIC) != 0)                            i--;                        if (i < tparams.length) {                            if (global.debug)                                 global.log("adding proxies for " + sym + ": " + ArrayApply.toString(tparams));                                                        Type[] targs1 = new Type[tparams.length];                            System.arraycopy(map(targs), 0, targs1, 0, targs.length);                            while (i < tparams.length) {                                targs1[i] = proxy(tparams[i], owner).type();                                i++;                            }                            return Type.typeRef(pre, sym, targs1);                        }                    } else if (LambdaLift.isLocal(sym, owner)) {                        assert targs.length == 0;                        return proxy(sym, owner).type();                    }                }                break;/*            case PolyType(Symbol[] tparams, _):                if (tparams.length != 0) {                    int len = excluded.size();                    for (int i = 0; i < tparams.length; i++)                        excluded.add(tparams[i]);                    Type tp1 = map(tp);                    for (int i = 0; i < tparams.length; i++)                        excluded.remove(excluded.size() - 1);                    return tp1;                }*/            }            return map(tp);        }