if (level == outers.length - 1) { assert outers[level].clasz.isRoot(): level + " - " + this; return Type.NoPrefix; } if (tlinks[level] != null) return tlinks[level].type(); return Type.singleType(getTypeLink(level + 1), outers[level].clasz.module());
if (outers[level].clasz.isPackageClass()) return Type.NoPrefix; assert tlinks[level] != null: level + " - " + Debug.show(clasz); return tlinks[level].type();
        public Type getTypeLink(int level) {            if (level == outers.length - 1) {                assert outers[level].clasz.isRoot(): level + " - " + this; // !!! remove                return Type.NoPrefix;            }            if (tlinks[level] != null) return tlinks[level].type();            return Type.singleType(getTypeLink(level + 1), outers[level].clasz.module());        }