final void put(
            final ByteVector code, final int sourceInsnBytecodeOffset, final boolean wideReference) {
        if ((flags & FLAG_RESOLVED) == 0) {
            if (wideReference) {
                addForwardReference(sourceInsnBytecodeOffset, FORWARD_REFERENCE_TYPE_WIDE, code.length);
                code.putInt(-1);
            } else {
                addForwardReference(sourceInsnBytecodeOffset, FORWARD_REFERENCE_TYPE_SHORT, code.length);
                code.putShort(-1);
            }
        } else {
            if (wideReference) {
                code.putInt(bytecodeOffset - sourceInsnBytecodeOffset);
            } else {
                code.putShort(bytecodeOffset - sourceInsnBytecodeOffset);
            }
        }
    }
Puts a reference to this label in the bytecode of a method. If the bytecode offset of the label
is known, the relative bytecode offset between the label and the instruction referencing it is
computed and written directly. Otherwise, a null relative offset is written and a new forward
reference is declared for this label.

@param code                     the bytecode of the method. This is where the reference is appended.
@param sourceInsnBytecodeOffset the bytecode offset of the instruction that contains the
                                reference to be appended.
@param wideReference            whether the reference must be stored in 4 bytes (instead of 2 bytes).
core/src/main/java/com/alibaba/fastjson2/internal/asm/Label.java