int addConstantUtf8(final String value) {
        final int CONSTANT_UTF8_TAG = 1;

        int hashCode = 0x7FFFFFFF & (CONSTANT_UTF8_TAG + value.hashCode());
        Symbol entry = entries[hashCode % entries.length];
        while (entry != null) {
            if (entry.tag == CONSTANT_UTF8_TAG
                    && entry.hashCode == hashCode
                    && entry.value.equals(value)) {
                return entry.index;
            }
            entry = entry.next;
        }
        constantPool.putByte(CONSTANT_UTF8_TAG).putUTF8(value);
        return put(new Symbol(constantPoolCount++, CONSTANT_UTF8_TAG, null, null, value, 0, hashCode)).index;
    }
Adds a CONSTANT_Utf8_info to the constant pool of this symbol table. Does nothing if the
constant pool already contains a similar item.

@param value a string.
@return a new or already existing Symbol with the given value.
core/src/main/java/com/alibaba/fastjson2/internal/asm/SymbolTable.java