code: public String readUTF8(int index, final char[] buf) {
          int item = readUnsignedShort(index);
          if (index == 0 || item == 0) {
              return null;
          }
          String s = strings[item];
          if (s != null) {
              return s;
          }
          index = items[item];
          strings[item] = readUTF(index + 2, readUnsignedShort(index), buf);
          return strings[item];
      }
docs: Reads an UTF8 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 index the start index of an unsigned short value in {@link #b b},
  whose value is the index of an UTF8 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 String corresponding to the specified UTF8 item.