class TrieStoreImpl implements TrieStore {

    @Override
    public Optional<Trie> retrieve(byte[] hash) {
        byte[] message = this.store.get(hash);
        if (message == null) {
            return Optional.empty();
        }

        Trie trie = Trie.fromMessage(message, this);
        savedTries.add(trie);
        return Optional.of(trie);
    }

    public  TrieStoreImpl(KeyValueDataSource store);

}