public Optional<V> get(Txn<ByteBuffer> txn, final K key) {
        try (PooledByteBuffer pooledKeyBuffer = getPooledKeyBuffer()) {
            final ByteBuffer keyBuffer = pooledKeyBuffer.getByteBuffer();
            serializeKey(keyBuffer, key);
            final ByteBuffer valueBuffer = lmdbDbi.get(txn, keyBuffer);
            if (LOGGER.isTraceEnabled()) {
                LOGGER.trace("Get returned value [{}] for key [{}]",
                        ByteBufferUtils.byteBufferInfo(valueBuffer),
                        ByteBufferUtils.byteBufferInfo(pooledKeyBuffer.getByteBuffer()));
            }

            return Optional.ofNullable(valueBuffer)
                    .map(this::deserializeValue);
        } catch (RuntimeException e) {
            throw new RuntimeException(LogUtil.message("Error getting key {}", key), e);
        }
    }
Gets the de-serialised value (if found) for the passed key
stroom-lmdb/src/main/java/stroom/lmdb/AbstractLmdbDb.java