@Override
    protected Traverser.Admin<S> processNextStart() {
        if (this.first) {
            if (null != this.start) {
                if (this.start instanceof Iterator)
                    this.starts.add(this.getTraversal().getTraverserGenerator().generateIterator((Iterator<S>) this.start, this, 1l));
                else
                    this.starts.add(this.getTraversal().getTraverserGenerator().generate((S) this.start, this, 1l));
            }
            this.first = false;
        }
        ///
        final Traverser.Admin<S> start = this.starts.next();
        if (start.get() instanceof Attachable &&
                this.getTraversal().getGraph().isPresent() &&
                (!(start.get() instanceof VertexProperty) || null != ((VertexProperty) start.get()).element()))
            start.set(((Attachable<S>) start.get()).attach(Attachable.Method.get(this.getTraversal().getGraph().get())));
        return start;
    }
@author Marko A. Rodriguez (http://markorodriguez.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/StartStep.java