sclass FreeList { MultiMap byLength = treeMultiMap(); TreeSet inOrder = new(intRangeComparatorByStart()); void add(IntRange r) { inOrder. } void remove(IntRange r) { } IntRange findFreeSpace(int minSize) { Map.Entry> e = byLength.ceilingEntry(minSize); ret e == null ? null : first(e.getValue()); } }