Symbol s = getTVar(token, owner); if (s == Symbol.NONE) return defaultType;
Symbol s = new AbsTypeSymbol( Position.NOPOS, Name.fromString(token).toTypeName(), owner, Modifiers.PARAM); s.setInfo(parser.defs.ANY_TYPE, parser.phaseId); locals.enter(s);
        protected Type parseMetaMethod() {            locals = new Scope();            try {                nextToken();                Symbol[] smbls = null;                //System.out.println("parse meta method " + token);                if ("[".equals(token)) {                    Vector syms = new Vector();                    do {                        nextToken();                        if ("]".equals(token))                            break;                        assert token.startsWith("?");                        Symbol s = getTVar(token, owner);                        if (s == Symbol.NONE)                            return defaultType;                        nextToken();                        //System.out.println("new var " + s + ", " + token);                        if (token.equals("<")) {                            nextToken();                            s.setInfo(parseType(), parser.phaseId);                        }                        syms.add(s);                    } while (token.equals(","));                    assert "]".equals(token);                    nextToken();                    smbls = (Symbol[])syms.toArray(new Symbol[syms.size()]);                }                if ("(".equals(token)) {                    int i = 0;                    Vector params = new Vector();                    do {                        nextToken();                        if (")".equals(token))                            break;			int flags = Modifiers.PARAM;			if ("def".equals(token)) {			    nextToken();			    flags |= Modifiers.DEF;			}                        params.add(new TermSymbol(                            Position.NOPOS,                            Name.fromString("x" + (i++)),                            owner,                            flags).setInfo(parseType(), parser.phaseId));                        //System.out.println("  + " + token);                    } while (token.equals(","));                    assert ")".equals(token);                    nextToken();                    //System.out.println("+++ method " + token);                    Type restpe = parseType();                    assert ";".equals(token);                    if (smbls == null)                        return Type.MethodType(                                (Symbol[])params.toArray(new Symbol[params.size()]),                                restpe);                    else                        return Type.PolyType(                                    smbls,                                    Type.MethodType(                                        (Symbol[])params.toArray(new Symbol[params.size()]),                                        restpe));                } else {                    Type res = parseType();                    assert ";".equals(token);                    if (smbls == null)                        return Type.PolyType(Symbol.EMPTY_ARRAY, res);                    else                        return Type.PolyType(smbls, res);                }            } catch (NoSuchElementException e) {                return defaultType;            } finally {                locals = null;            }        }