### Question:
HugeLongLongDoubleMap { public void addTo(long key1, long key2, double value) { addTo0(1L + key1, 1L + key2, value); } HugeLongLongDoubleMap(AllocationTracker tracker);  HugeLongLongDoubleMap(long expectedElements, AllocationTracker tracker); synchronized void set(long key1, long key2, double value); void addTo(long key1, long key2, double value); double getOrDefault(long key1, long key2, double defaultValue); long size(); boolean isEmpty(); void release(); @Override String toString();  }### Answer:
@Test void resizeOnGrowthAndTrackMemoryUsage() { long firstSize = 2L * sizeOfLongArray(8) + sizeOfDoubleArray(8); long secondSize = 2L * sizeOfLongArray(16) + sizeOfDoubleArray(16); long thirdSize = 2L * sizeOfLongArray(32) + sizeOfDoubleArray(32); AllocationTracker tracker = AllocationTracker.create(); HugeLongLongDoubleMap map = new HugeLongLongDoubleMap(tracker); for (long i = 0L; i < 6L; i++) { map.addTo(i, i * 42L, (double) i * 13.37); assertEquals(firstSize, tracker.trackedBytes()); } for (long i = 6L; i < 12L; i++) { map.addTo(i, i * 42L, (double) i * 13.37); assertEquals(secondSize, tracker.trackedBytes()); } for (long i = 12L; i < 24L; i++) { map.addTo(i, i * 42L, (double) i * 13.37); assertEquals(thirdSize, tracker.trackedBytes()); } }