@Override
    public S projectTraverser(final Traverser.Admin<S> traverser) {
        final S value = traverser.get();
        final long bulk = traverser.bulk();

        // force the bulk to the type of the value so that mul doesn't arbitrarily widen the type of the Number
        final Class<? extends Number> clazz = null == value ? Long.class : value.getClass();
        return (S) mul(value, coerceTo(bulk, clazz));
    }
Advances the starts until a non-null value is found or simply returns {@code null}. In this way, an all
{@code null} stream will result in {@code null}.
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SumGlobalStep.java