@Override
      public void save(@NotNull DataOutput out, @NotNull Collection<Integer> value) throws IOException {
        final int numberOfValues = value.size();

        int[] buffer = SPARE_BUFFER_LOCAL.getBuffer(numberOfValues);
        int ptr = 0;
        if (value instanceof IntCollection intCollection) {
          buffer = intCollection.toArray(buffer);
        } else {
          for (Integer i : value) {
            buffer[ptr++] = i;
          }
        }
        Arrays.sort(buffer, 0, numberOfValues);

        DataInputOutputUtil.writeINT(out, numberOfValues);
        int prev = 0;
        for (ptr = 0; ptr < numberOfValues; ++ptr) {
          int cur = buffer[ptr];
          DataInputOutputUtil.writeLONG(out, (long)cur - prev);
          prev = cur;
        }
      }
@Override
      public void save(@NotNull DataOutput out, @NotNull Collection<Integer> value)