public Object readConst(final int item, final char[] buf) {
        int index = items[item];
        switch (b[index - 1]) {
        case ClassWriter.INT:
            return readInt(index);
        case ClassWriter.FLOAT:
            return Float.intBitsToFloat(readInt(index));
        case ClassWriter.LONG:
            return readLong(index);
        case ClassWriter.DOUBLE:
            return Double.longBitsToDouble(readLong(index));
        case ClassWriter.CLASS:
            return Type.getObjectType(readUTF8(index, buf));
        case ClassWriter.STR:
            return readUTF8(index, buf);
        case ClassWriter.MTYPE:
            return Type.getMethodType(readUTF8(index, buf));
        default: // case ClassWriter.HANDLE_BASE + [1..9]:
            int tag = readByte(index);
            int[] items = this.items;
            int cpIndex = items[readUnsignedShort(index + 1)];
            String owner = readClass(cpIndex, buf);
            cpIndex = items[readUnsignedShort(cpIndex + 2)];
            String name = readUTF8(cpIndex, buf);
            String desc = readUTF8(cpIndex + 2, buf);
            return new Handle(tag, owner, name, desc);
        }
    }
public Object readConst ( final int item , final char [ ] buf ) { int index = items [ item ] ; switch ( b [ index - 1 ] ) { case ClassWriter . INT : return readInt ( index ) ; case ClassWriter . FLOAT : return Float . intBitsToFloat ( readInt ( index ) ) ; case ClassWriter . LONG : return readLong ( index ) ; case ClassWriter . DOUBLE : return Double . longBitsToDouble ( readLong ( index ) ) ; case ClassWriter . CLASS : return Type . getObjectType ( readUTF8 ( index , buf ) ) ; case ClassWriter . STR : return readUTF8 ( index , buf ) ; case ClassWriter . MTYPE : return Type . getMethodType ( readUTF8 ( index , buf ) ) ; default : int tag = readByte ( index ) ; int [ ] items = this . items ; int cpIndex = items [ readUnsignedShort ( index + 1 ) ] ; String owner = readClass ( cpIndex , buf ) ; cpIndex = items [ readUnsignedShort ( cpIndex + 2 ) ] ; String name = readUTF8 ( cpIndex , buf ) ; String desc = readUTF8 ( cpIndex + 2 , buf ) ; return new Handle ( tag , owner , name , desc ) ; } }
Reads a numeric or string constant pool item in {@link #b b}. <i>This
method is intended for {@link Attribute} sub classes, and is normally not
needed by class generators or adapters.</i>

@param item
the index of a constant pool item.
@param buf
buffer to be used to read the item. This buffer must be
sufficiently large. It is not automatically resized.
@return the {@link Integer}, {@link Float}, {@link Long}, {@link Double},
{@link String}, {@link Type} or {@link Handle} corresponding to
the given constant pool item.