private void accept(final TypeCollector classVisitor) {
            char[] c = new char[maxStringLength]; // buffer used to read strings
            int i, j, k; // loop variables
            int u, v, w; // indexes in b

            String attrName;
            int anns = 0;
            int ianns = 0;

            // visits the header
            u = header;
            v = items[readUnsignedShort(u + 4)];
            int len = readUnsignedShort(u + 6);
            w = 0;
            u += 8;

            for (i = 0; i < len; ++i)
                u += 2;

            v = u;
            i = readUnsignedShort(v);
            v += 2;

            for ( ; i > 0; --i) {
                j = readUnsignedShort(v + 6);
                v += 8;
                for ( ; j > 0; --j)
                    v += 6 + readInt(v + 2);

            }

            i = readUnsignedShort(v);
            v += 2;

            for ( ; i > 0; --i) {
                j = readUnsignedShort(v + 6);
                v += 8;
                for ( ; j > 0; --j)
                    v += 6 + readInt(v + 2);

            }

            i = readUnsignedShort(v);
            v += 2;

            for ( ; i > 0; --i)
                v += 6 + readInt(v + 2);

            //annotations not needed.

            // visits the fields
            i = readUnsignedShort(u);
            u += 2;

            for ( ; i > 0; --i) {
                j = readUnsignedShort(u + 6);
                u += 8;

                for ( ; j > 0; --j)
                    u += 6 + readInt(u + 2);

            }

            // visits the methods
            i = readUnsignedShort(u);
            u += 2;

            for ( ; i > 0; --i)
                // inlined in original ASM source, now a method call
                u = readMethod(classVisitor, c, u);


        }