@Override
    protected Traverser.Admin<E> processNextStart() {
        final Traverser.Admin<S> traverser = this.starts.next();
        final Iterator<E> keyIterator = TraversalUtil.applyAll(traverser, this.keyTraversal);
        if (keyIterator.hasNext()) {
            final E key = keyIterator.next();
            try {
                final E end = getScopeValue(pop, key, traverser);
                final Traverser.Admin<E> outTraverser = traverser.split(null == end ? null : TraversalUtil.applyNullable(end, this.selectTraversal), this);
                if (!(this.getTraversal().getParent() instanceof MatchStep)) {
                    PathProcessor.processTraverserPathLabels(outTraverser, this.keepLabels);
                }
                return outTraverser;
            } catch (KeyNotFoundException nfe) {
                return EmptyTraverser.instance();
            }
        } else {
            return EmptyTraverser.instance();
        }
    }
@author Daniel Kuppitz (http://gremlin.guru)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TraversalSelectStep.java