* @return a new traversal with the starts being the results of the TraversalVertexProgram
*/
public default Traversal<S, E> submit(final GraphComputer computer) {
try {
this.applyStrategies(TraversalEngine.COMPUTER);
final TraversalVertexProgram vertexProgram = TraversalVertexProgram.build().traversal(this::clone).create();
final ComputerResult result = computer.program(vertexProgram).submit().get();
final GraphTraversal<S, S> traversal = result.graph().of();
return traversal.addStep(new ComputerResultStep<>(traversal, result, vertexProgram, true));
} catch (final Exception e) {
throw new IllegalStateException(e.getMessage(), e);