@Override
    protected Traverser.Admin<ComputerResult> processNextStart() throws NoSuchElementException {
        Future<ComputerResult> future = null;
        try {
            if (this.first && this.getPreviousStep() instanceof EmptyStep) {
                this.first = false;
                final Graph graph = this.getTraversal().getGraph().get();
                future = this.getComputer().apply(graph).program(this.generateProgram(graph, EmptyMemory.instance())).submit();
                final ComputerResult result = future.get();
                this.processMemorySideEffects(result.memory());
                return this.getTraversal().getTraverserGenerator().generate(result, this, 1l);
            } else {
                final Traverser.Admin<ComputerResult> traverser = this.starts.next();
                final Graph graph = traverser.get().graph();
                final Memory memory = traverser.get().memory();
                future = this.getComputer().apply(graph).program(this.generateProgram(graph, memory)).submit();
                final ComputerResult result = future.get();
                this.processMemorySideEffects(result.memory());
                return traverser.split(result, this);
            }
        } catch (final InterruptedException ie) {
            // the thread running the traversal took an interruption while waiting on the call the future.get().
            // the future should then be cancelled with interruption so that the GraphComputer that created
            // the future knows we don't care about it anymore. The GraphComputer should attempt to respect this
            // cancellation request.
            if (future != null) future.cancel(true);
            throw new TraversalInterruptedException();
        } catch (ExecutionException e) {
            throw new IllegalStateException(e.getMessage(), e);
        }
    }
@author Marko A. Rodriguez (http://markorodriguez.com)
@author Stephen Mallette (http://stephen.genoprime.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/VertexProgramStep.java