BLink implements AutoCloseable, Page.Owner { public V search(K v) { Node<K, V> n; @SuppressWarnings("unchecked") Deque<ResultCouple<K, V>> descent = DummyDeque.INSTANCE; try { n = locate_leaf(v, READ_LOCK, descent); } catch (IOException ex) { throw new UncheckedIOException("failed to search for " + v, ex); } try { V search = n.check_key(v); return search; } catch (IOException ex) { throw new UncheckedIOException("failed to search for " + v, ex); } finally { unlock(n, READ_LOCK); } } BLink(
            long maxSize, SizeEvaluator<K, V> evaluator,
            PageReplacementPolicy policy, BLinkIndexDataStorage<K, V> storage
    );  BLink(
            long maxSize, SizeEvaluator<K, V> evaluator,
            PageReplacementPolicy policy, BLinkIndexDataStorage<K, V> storage,
            BLinkMetadata<K> metadata
    ); @Override void close(); void truncate(); long size(); long getUsedMemory(); int nodes(); @Override void unload(long pageId); BLinkMetadata<K> checkpoint(); V search(K v); Stream<Entry<K, V>> scan(K from, K to); Stream<Entry<K, V>> scan(K from, K to, boolean toInclusive); boolean insert(K v, V e, V expected); V insert(K v, V e); V delete(K v); @Override String toString(); @SuppressWarnings("unchecked") String toStringFull();  }
@Test public void testSearch() throws Exception { List<Long> l = new ArrayList<>(); for (long i = 0; i < 50; i++) { l.add(i); } testDataSet(l); }