private @NotNull BitSet buildIdSetOfExtraRecords() throws IOException {
    final BitSet extraRecords = new BitSet();

    final RecordIdIterator iterator = super.createRecordIdIterator();
    while (iterator.hasNextId()) {
      int recordId = iterator.nextId();
      final int sizeAndCapacityOfRecordAbsoluteOffset = getOffset(recordId, SIZE_AND_CAPACITY_OFFSET);
      final int sizeAndCapacityValue = myStorage.getInt(sizeAndCapacityOfRecordAbsoluteOffset);

      final int addressOfRecordAbsoluteOffset = getOffset(recordId, ADDRESS_OFFSET);
      final int existingAddressValue = myStorage.getInt(addressOfRecordAbsoluteOffset);

      if (sizeAndCapacityValue < 0) {
        extraRecords.set(-sizeAndCapacityValue);
      }

      if (existingAddressValue < 0) {
        extraRecords.set(-existingAddressValue);
      }
    }
    return extraRecords;
  }
private @NotNull BitSet buildIdSetOfExtraRecords()