jodd-proxetta/src/main/java/jodd/asm7/SymbolTable.java
private Symbol addConstantUtf8Reference(final int tag, final String value) {
    int hashCode = hash(tag, value);
    Entry entry = get(hashCode);
    while (entry != null) {
      if (entry.tag == tag && entry.hashCode == hashCode && entry.value.equals(value)) {
        return entry;
      }
      entry = entry.next;
    }
    constantPool.put12(tag, addConstantUtf8(value));
    return put(new Entry(constantPoolCount++, tag, value, hashCode));
  }
private Symbol addConstantUtf8Reference(final int tag, final String value) {
    int hashCode = hash(tag, value);
    Entry entry = get(hashCode);
    while (entry != null) {
      if (entry.tag == tag && entry.hashCode == hashCode && entry.value.equals(value)) {
        return entry;
      }
      entry = entry.next;
    }
    constantPool.put12(tag, addConstantUtf8(value));
    return put(new Entry(constantPoolCount++, tag, value, hashCode));
  }
Adds a CONSTANT_Class_info, CONSTANT_String_info, CONSTANT_MethodType_info,
CONSTANT_Module_info or CONSTANT_Package_info to the constant pool of this symbol table. Does
nothing if the constant pool already contains a similar item.

@param tag one of {@link Symbol#CONSTANT_CLASS_TAG}, {@link Symbol#CONSTANT_STRING_TAG}, {@link
Symbol#CONSTANT_METHOD_TYPE_TAG}, {@link Symbol#CONSTANT_MODULE_TAG} or {@link
Symbol#CONSTANT_PACKAGE_TAG}.
@param value an internal class name, an arbitrary string, a method descriptor, a module or a
package name, depending on tag.
@return a new or already existing Symbol with the given value.