@Override
    protected Traverser.Admin<S> processNextStart() {
        final Traverser.Admin<S> traverser = this.starts.next();
        if (null == sackTraversal) {
            traverser.sack(this.sackFunction.apply(traverser.sack(), (B) traverser.get()));
            return traverser;
        } else {
            final TraversalProduct product = TraversalUtil.produce(traverser, this.sackTraversal);
            if (!product.isProductive()) return EmptyTraverser.instance();
            traverser.sack(this.sackFunction.apply(traverser.sack(), (B) product.get()));
            return traverser;
        }
    }
@author Marko A. Rodriguez (http://markorodriguez.com)
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/SackValueStep.java