public void put(int index, long[] value) {
        if (value == null) {
            remove(index);
            return;
        }
        if (index >= starts.length) {        
            adjustArraySizes(Math.max(index+1,starts.length*2));
        }
        if (index > lastStart) {
            lastStart = index;
        }
        
        // is there already something here?
        if (starts[index] > 0) {
            // if so, does the new array fit in the already allocated space?
            if (lengths[index] >= value.length) {
                // if it does, subtract the difference the allocated space total
                totalSpaceAllocated -= lengths[index]-value.length;  
            }
            else {
                // otherwise, subtract the entire space from the allocated space total
                // and allocate new space
                totalSpaceAllocated -= lengths[index];
                starts[index] = allocSpace(value.length);
            }
        }
        else {
            starts[index] = allocSpace(value.length);
        }
        lengths[index] = (short)value.length;
        System.arraycopy(value,0,longs,starts[index],value.length);
    }
Puts the given long array in the long array array at
the given index
@param index Index into the array.
@param value value to store
@throws IndexOutOfBoundsException if the index is negative
Ghidra/Framework/Generic/src/main/java/ghidra/util/datastruct/LongArrayArray.java