@Override public Map.Entry<Object, OIdentifiable> nextEntry() { if (currentIterator == null) return null; while (!currentIterator.hasNext()) { final Map.Entry<Object, OIdentifiable> entry = internalCursor.nextEntry(); if (entry == null) { currentIterator = null; return null; } queryResult.clear(); queryResult.addAll(applyTailIndexes(entry.getValue())); currentIterator = queryResult.iterator(); } if (!currentIterator.hasNext()) { currentIterator = null; return null; } final OIdentifiable result = currentIterator.next(); return new Map.Entry<Object, OIdentifiable>() { @Override public Object getKey() { throw new UnsupportedOperationException("getKey"); } @Override public OIdentifiable getValue() { return result; } @Override public OIdentifiable setValue(OIdentifiable value) { throw new UnsupportedOperationException("setValue"); } }; }