/** Return the index of a UTF entry or -1 if it doesn't exist. */
  int findUtf8(String value) {

    ConstantPoolEntry item = findMatchingEntry(value);
    if (item == null) return -1;

    return item.getIndex();
  }
 /**
  * Add an entry, but only if it doesn't exist.
  *
  * @return the constant pool index of the added or existing item.
  */
 private int addDirectEntry(ConstantPoolEntry item) {
   ConstantPoolEntry existingItem = findMatchingEntry(item);
   if (existingItem != null) {
     item = existingItem;
     // foundCount++;
   } else {
     addEntry(item.getKey(), item);
   }
   return item.getIndex();
 }
  /** Add an index reference. */
  private int addIndexReference(int tag, int i1, int i2) {

    // search for the item using the pre-allocated object
    searchIndex.set(tag, i1, i2);

    ConstantPoolEntry item = findMatchingEntry(searchIndex);

    if (item == null) {
      item = new CONSTANT_Index_info(tag, i1, i2);
      addEntry(item.getKey(), item);
    }

    return item.getIndex();
  }