@Override
    protected Traverser.Admin<S> processNextStart() throws NoSuchElementException {
        if (this.optionalTraversal.hasNext())
            return this.optionalTraversal.nextTraverser();
        else {
            final Traverser.Admin<S> traverser = this.starts.next();
            this.optionalTraversal.reset();
            this.optionalTraversal.addStart(traverser.split());
            if (this.optionalTraversal.hasNext())
                return this.optionalTraversal.nextTraverser();
            else
                return traverser;
        }
    }
@author Marko A. Rodriguez (http://markorodriguez.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/OptionalStep.java