e.printStackTrace(); throw new IOException("bad class file (" + e.getMessage() + ")");
if (global.debug) e.printStackTrace(); String s = e.getMessage() == null ? "" : " (" +e.getMessage()+ ")"; throw new IOException("bad class file" + s);
    public void parse() throws IOException {        try {            if (in.nextInt() != JAVA_MAGIC)                throw new IOException("illegal start of class file");            int minorVersion = in.nextChar();            int majorVersion = in.nextChar();            if ((majorVersion < JAVA_MAJOR_VERSION) ||                ((majorVersion == JAVA_MAJOR_VERSION) &&                 (minorVersion < JAVA_MINOR_VERSION)))                throw new IOException("class file has wrong version " +                        majorVersion + "." + minorVersion + ", should be " +                        JAVA_MAJOR_VERSION + "." + JAVA_MINOR_VERSION);            pool.indexPool();            int flags = in.nextChar();            Name name = readClassName(in.nextChar());            if (c.fullName() != name)                throw new IOException("class file '" + c.fullName() +                                      "' contains wrong class " + name);            // todo: correct flag transition            c.flags = transFlags(flags);	    if ((c.flags & Modifiers.DEFERRED) != 0)		c.flags = c.flags & ~Modifiers.DEFERRED | Modifiers.ABSTRACTCLASS;            Type supertpe = readClassType(in.nextChar());            Type[] basetpes = new Type[in.nextChar() + 1];            this.locals = new Scope();            this.statics = new Scope();            // set type of class            Type classType = Type.compoundType(basetpes, locals, c);            c.setInfo(classType, Symbol.FIRST_ID);            // set type of statics	    Symbol staticsClass = c.module().moduleClass();	    if (staticsClass.isModuleClass()) {		Type staticsInfo = Type.compoundType(Type.EMPTY_ARRAY, statics, staticsClass);		staticsClass.setInfo(staticsInfo, Symbol.FIRST_ID);		c.module().setInfo(Type.TypeRef(staticsClass.owner().thisType(),					    staticsClass, Type.EMPTY_ARRAY));	    }            basetpes[0] = supertpe;            for (int i = 1; i < basetpes.length; i++)                basetpes[i] = readClassType(in.nextChar());            int fieldCount = in.nextChar();            for (int i = 0; i < fieldCount; i++)                parseField();            int methodCount = in.nextChar();            for (int i = 0; i < methodCount; i++)                parseMethod();	    Symbol constr = c.primaryConstructor();	    if (!constr.isInitialized()) {		constr.setInfo(		    Type.MethodType(Symbol.EMPTY_ARRAY, ctype), Symbol.FIRST_ID);		if ((c.flags & Modifiers.INTERFACE) == 0)		    constr.flags |= Modifiers.PRIVATE;	    }            attrib.readAttributes(c, classType, CLASS_ATTR);	    //System.out.println("dynamic class: " + c);	    //System.out.println("statics class: " + staticsClass);	    //System.out.println("module: " + c.module());	    //System.out.println("modules class: " + c.module().type().symbol());        } catch (RuntimeException e) {            e.printStackTrace();            throw new IOException("bad class file (" + e.getMessage() + ")");        }    }