code: Header readHeader(@NonNull InputStream input) throws IOException {
          byte version = (byte) input.read();
          int keyLength = BitConverter.readInt(input);
          int valueLength = BitConverter.readInt(input);
          long entryVersion = BitConverter.readLong(input);
          validateHeader(keyLength, valueLength);
          return new Header(version, keyLength, valueLength, entryVersion);
      }
docs: Reads the Entry's Header from the given {@link InputStream}.
  
  @param input The {@link InputStream} to read from.
  @return The Entry Header.
  @throws IOException If an invalid header was detected or another IOException occurred.