code: public Object readConst(final int item, final char[] buf) {
          int index = items[item];
          switch (b[index - 1]) {
              case ClassWriter.INT:
                  return new Integer(readInt(index));
              case ClassWriter.FLOAT:
                  return new Float(Float.intBitsToFloat(readInt(index)));
              case ClassWriter.LONG:
                  return new Long(readLong(index));
              case ClassWriter.DOUBLE:
                  return new Double(Double.longBitsToDouble(readLong(index)));
              case ClassWriter.CLASS:
                  return Type.getObjectType(readUTF8(index, buf));
                  // case ClassWriter.STR:
              default:
                  return readUTF8(index, buf);
          }
      }
docs: 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} or {@link Type} corresponding to
  the given constant pool item.