class ContractDetailsImpl implements ContractDetails {

    @Override
    public synchronized byte[] getBytes(DataWord key) {
        logger.trace("get bytes");

        checkDataSourceIsOpened();

        try {
            return this.trie.get(key.getData());
        }
        catch (RuntimeException ex) {
            logger.error("error in get bytes", ex);
            logger.trace("retrying get bytes");
            checkDataSourceIsOpened();
            return this.trie.get(key.getData());
        }
    }

    public  ContractDetailsImpl(byte[] encoded, TrieStore.Pool trieStorePool, int memoryStorageLimit);
    public  ContractDetailsImpl(byte[] address, Trie trie, byte[] code, TrieStore.Pool trieStorePool, int memoryStorageLimit);

}