private void addReference(final int sourcePosition, final int referencePosition, final int referenceType) {
        if (srcAndRefPositions == null) {
            srcAndRefPositions = new int[6];
        }
        if (referenceCount >= srcAndRefPositions.length) {
            int[] a = new int[srcAndRefPositions.length + 6];
            System.arraycopy(srcAndRefPositions, 0, a, 0, srcAndRefPositions.length);
            srcAndRefPositions = a;
        }
        srcAndRefPositions[referenceCount++] = sourcePosition;
        srcAndRefPositions[referenceCount++] = referencePosition | referenceType;
    }
Adds a forward reference to this label. This method must be called only for a true forward reference, i.e. only
if this label is not resolved yet. For backward references, the offset of the reference can be, and must be,
computed and stored directly.

@param sourcePosition the position of the referencing instruction. This position will be used to compute the
offset of this forward reference.
@param referencePosition the position where the offset for this forward reference must be stored.
src/main/java/com/alibaba/fastjson/asm/Label.java