public Map.Entry<K, V> traverse(final Cursor<? super K, ? super V> cursor) {
TrieEntry<K, V> entry = nextEntry(null);
while (entry != null) {
final TrieEntry<K, V> current = entry;
final Decision decision = cursor.select(current);
entry = nextEntry(current);
switch(decision) {
case EXIT:
return current;