if (owner.isClass() || owner.isConstructor())
if (owner.isType() || owner.isConstructor())
    public Type transformInfo(Symbol symbol, Type type) {        if (symbol.isJava()) return type;        //System.out.println("!!! debug1 = " + Debug.show(symbol));        //if (symbol.name.toString().equals("x")) new Error("!!!").printStackTrace();        type = typeTransformer.apply(type);        if (symbol.isConstructor()) {            Symbol[] tparams = type.typeParams();            Symbol[] vparams = type.valueParams();            Type result = type.resultType();            // Add outer value link            if (hasOuterValueLink(symbol)) {                Name name = Names.OUTER(symbol);                Symbol vlink = new TermSymbol(symbol.pos, name, symbol, 0);                vlink.setInfo(getOuterClass(symbol).typeOfThis()); // !!!                vparams = Symbol.cloneArray(1, vparams);                vparams[0] = vlink;            }            // Add outer type links            if (hasOuterTypeLinks(symbol)) {                Symbol[] oldtparams = getOuterTypeParams(symbol);                Symbol[] tlinks = Symbol.cloneArray(oldtparams);                for (int i = 0; i < tlinks.length; i++) {                    tlinks[i] = oldtparams[i].cloneSymbol(symbol);                    tlinks[i].name = Names.OUTER(symbol, oldtparams[i]);                }                tparams = Symbol.concat(tlinks, tparams);                result = Type.getSubst(oldtparams, tlinks, true).apply(result);            }            type = Type.MethodType(vparams, result);            if (tparams.length != 0) type = Type.PolyType(tparams, type);        } else {            Symbol owner = symbol.owner().isConstructor()                ? symbol.owner()                : symbol.enclClass();            //System.out.println("!!! debug2 = " + Debug.show(symbol) + " - " + Debug.show(owner) + " --- " + (owner == Symbol.NONE) + " -- #" + owner.name + "#");            //if (onwer.isJava() && owner != Symbol.NONE && owner.name.length() > 0) // !!!            if (owner.isClass() || owner.isConstructor())            type = getOuterTypeSubst(owner, true).apply(type);        }        /*        String s1 = Debug.show(symbol);        String s2 = symbol.info().toString();        symbol.updateInfo(type);        global.nextPhase();        String s3 = type.toString();        global.prevPhase();        System.out.println("!!! symbol = " + s1);        System.out.println("!!! type   = " + s2 + " -- " + System.identityHashCode(s2));        System.out.println("!!! new    = " + s3 + " -- " + System.identityHashCode(s3));        System.out.println("!!!");        */        return type;    }