@Override
  public @Nullable K readKey(@NotNull ByteBuffer input) throws IOException {
    byte header = readHeader(input);
    boolean valueIsNull = isValueVoid(header);
    if (valueIsNull) {
      return null;
    }

    ByteBuffer keyRecordSlice = input
      .position(HEADER_SIZE)
      .limit(HEADER_SIZE + keyRecordSize);
    return keyDescriptor.read(keyRecordSlice);
  }
@Override
  public @Nullable K readKey(@NotNull ByteBuffer input)