### Question:
CompressedLongArray { public void add(long[] values, int start, int end, int valuesToAdd) { long currentLastValue = this.lastValue; long delta; long compressedValue; int requiredBytes = 0; for (int i = start; i < end; i++) { if(values[i] == IGNORE_VALUE) { continue; } delta = values[i] - currentLastValue; compressedValue = zigZag(delta); currentLastValue = values[i]; values[i] = compressedValue; requiredBytes += encodedVLongSize(compressedValue); } ensureCapacity(this.pos, requiredBytes, this.storage); this.pos = encodeVLongs(values, start, end, this.storage, this.pos); this.lastValue = currentLastValue; this.length += valuesToAdd; } CompressedLongArray(AllocationTracker tracker);  CompressedLongArray(AllocationTracker tracker, int numberOfProperties); void add(long[] values, int start, int end, int valuesToAdd); void add(long[] values, long[][] allWeights, int start, int end, int valuesToAdd); int length(); int uncompress(long[] into); byte[] storage(); boolean hasWeights(); void release();  }### Answer:
@Test void add() { CompressedLongArray compressedLongArray = new CompressedLongArray(AllocationTracker.empty()); final long[] inValues = {1, 2, 3, 4}; compressedLongArray.add(inValues.clone(), 0, inValues.length, inValues.length); assertTrue(compressedLongArray.storage().length >= inValues.length); long[] outValues = new long[4]; int uncompressedValueCount = compressedLongArray.uncompress(outValues); assertEquals(4, uncompressedValueCount); assertArrayEquals(inValues, outValues); }