docs: @Override
     public boolean equalsKey(long address, WrappedBytes wrappedBytes) {
        // 16 bytes for eviction if needed (optional)
        // 8 bytes for linked pointer
        int headerOffset = evictionEnabled ? 24 : 8;
        byte type = MEMORY.getByte(address, headerOffset);
        headerOffset++;
        // First if hashCode doesn't match then the key can't be equal
        int hashCode = wrappedBytes.hashCode();
        if (hashCode != MEMORY.getInt(address, headerOffset)) {
           return false;
        }
        headerOffset += 4;
        // If the length of the key is not the same it can't match either!
        int keyLength = MEMORY.getInt(address, headerOffset);
        if (keyLength != wrappedBytes.getLength()) {
           return false;
        }
        headerOffset += 4;
        if (requiresMetadataSize(type)) {
           headerOffset += 4;
        }
        // This is for the value size which we don't need to read
        headerOffset += 4;
        // Finally read each byte individually so we don't have to copy them into a byte[]
        for (int i = 0; i < keyLength; i++) {
           byte b = MEMORY.getByte(address, headerOffset + i);
           if (b != wrappedBytes.getByte(i))
              return false;
        }
  
        return true;
     }