docs: private void free(FileEntry fe) throws IOException {
        if (fe != null) {
           // Invalidate entry on disk (by setting keyLen field to 0)
           // No need to wait for readers to unlock here, the FileEntry instance is not modified,
           // and allocate() won't return an entry as long as it has a reader.
           channel.write(ByteBuffer.wrap(ZERO_INT), fe.offset + KEYLEN_POS);
           if (!freeList.add(fe)) {
              throw new IllegalStateException(String.format("Trying to free an entry that was not allocated: %s", fe));
           }
           if (trace) log.tracef("Deleted entry at %d:%d, there are now %d free entries", fe.offset, fe.size, freeList.size());
        }
     }