### Question:
DetailsDataStore { public synchronized ContractDetails get(UscAddress addr, byte[] codeHash) { ContractDetails details = cache.get(addr); boolean isDifferentCodeHash = false; if (details == null) { if (removes.contains(addr)) { return null; } byte[] data = db.get(addr.getBytes()); if (data == null) { return null; } details = createContractDetails(data, trieStorePool, memoryStorageLimit); cache.put(addr, details); float out = ((float) data.length) / 1048576; if (out > 10) { String sizeFmt = format("%02.2f", out); gLogger.debug("loaded: address: {}, size: {}MB", addr, sizeFmt); } } else { isDifferentCodeHash = !Arrays.equals(codeHash, details.getCodeHash()); if (details.getCode() != null && isDifferentCodeHash) { byte[] oldCode = details.getCode(); String dataSourceName = ((ContractDetailsImpl) details).getDataSourceName(); TrieStoreImpl trieStore = (TrieStoreImpl) trieStorePool.getInstanceFor(dataSourceName); trieStore.storeValue(Keccak256Helper.keccak256(oldCode), oldCode); } } if (isDifferentCodeHash || !Arrays.equals(codeHash, details.getCodeHash())) { ((ContractDetailsImpl) details).fixCodeBy(codeHash); } return details; } DetailsDataStore(DatabaseImpl db, TrieStore.Pool trieStorePool, int memoryStorageLimit); synchronized ContractDetails get(UscAddress addr, byte[] codeHash); synchronized void update(UscAddress addr, ContractDetails contractDetails); synchronized void remove(UscAddress addr); synchronized void flush(); synchronized Set<UscAddress> keys();  }### Answer:
@Test public void test4() { DatabaseImpl db = new DatabaseImpl(new HashMapDB()); TrieStore.Pool trieStorePool = new TrieStorePoolOnMemory(); DetailsDataStore dds = new DetailsDataStore(db, trieStorePool, config.detailsInMemoryStorageLimit()); UscAddress c_key = new UscAddress("0000000000000000000000000000000000001a2b"); ContractDetails contractDetails = dds.get(c_key, EMPTY_DATA_HASH); assertNull(contractDetails); }