s.setFirstInfo(type); attrib.readAttributes(s, type, METH_ATTR);
    protected void parseMethod() {        int flags = in.nextChar();        Name name = (Name)pool.readPool(in.nextChar());        Type type = readType(in.nextChar());        if (CONSTR_N.equals(name)) {            Symbol s = TermSymbol.newConstructor(c, transFlags(flags));            // kick out package visible or            // private constructors            if (((flags & 0x0002) != 0) ||                ((flags & 0x0007) == 0)) {                attrib.readAttributes(s, type, METH_ATTR);                return;            }            switch (type) {            case MethodType(Symbol[] vparams, _):                type = Type.MethodType(vparams, ctype);                break;            default:                throw new ApplicationError();            }            s.setFirstInfo(type);            attrib.readAttributes(s, type, METH_ATTR);            Symbol constr = c.primaryConstructor();            if (constr.isInitialized()) constr = c.addConstructor();            s.copyTo(constr);            //System.out.println(c + " " + c.allConstructors() + ":" + c.allConstructors().info());//debug            //System.out.println("-- enter " + s);        } else {            Symbol s = new TermSymbol(                Position.NOPOS, name,                ((flags & 0x0008) != 0) ? c.module().moduleClass() : c,                transFlags(flags));            s.setFirstInfo(type);            attrib.readAttributes(s, type, METH_ATTR);            ((flags & 0x0008) != 0 ? statics : locals).enterOrOverload(s);        }    }