This is an automated email from the ASF dual-hosted git repository.

okram pushed a commit to branch tp4
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 342e7604c4b7a053d3f766a67edef67bb9754e87
Author: Marko A. Rodriguez <okramma...@gmail.com>
AuthorDate: Thu Mar 7 11:14:02 2019 -0700

    Added ProcessorFactory which is used with a TraversalSource to register the 
factoryused to mint Processors to execute traversal chains. Thus, g = 
g.processor(PipesProcessor.class). Everything is moving along nicely.
---
 .../org/apache/tinkerpop/language/Traversal.java   | 44 ++++++++++++++++++----
 .../apache/tinkerpop/language/TraversalSource.java | 16 +++++++-
 .../language/{__.java => TraversalUtil.java}       | 13 +++++--
 .../java/org/apache/tinkerpop/language/__.java     |  4 +-
 .../tinkerpop/machine/bytecode/BytecodeUtil.java   | 10 ++---
 .../tinkerpop/machine/bytecode/Instruction.java    |  3 +-
 .../machine/functions/AbstractFunction.java        |  4 +-
 .../machine/functions/FilterFunction.java          |  2 +-
 .../machine/functions/FlatMapFunction.java         |  2 +-
 .../machine/functions/InitialFunction.java         |  2 +-
 .../tinkerpop/machine/functions/MapFunction.java   |  2 +-
 .../machine/functions/NestedFunction.java          |  2 +-
 .../machine/functions/filter/IdentityFilter.java   |  2 +-
 .../machine/functions/filter/IsFilter.java         |  8 ++--
 .../machine/functions/initial/InjectInitial.java   | 22 +++++------
 .../tinkerpop/machine/functions/map/IncrMap.java   |  2 +-
 .../tinkerpop/machine/functions/map/MapMap.java    |  4 +-
 .../tinkerpop/machine/functions/map/PathMap.java   |  4 +-
 .../IncrMap.java => processor/EmptyProcessor.java} | 37 +++++++++++++-----
 .../machine/processor/EmptyProcessorFactory.java}  | 21 +++++++----
 .../machine/{ => processor}/Processor.java         |  2 +-
 .../processor/ProcessorFactory.java}               | 10 ++---
 .../tinkerpop/machine/traversers/Traverser.java    | 10 ++---
 .../apache/tinkerpop/machine/TraversalTest.java    |  5 +--
 .../machine/compiler/BytecodeUtilTest.java         |  7 ++--
 .../tinkerpop/machine/pipes/AbstractStep.java      | 16 +++-----
 .../apache/tinkerpop/machine/pipes/FilterStep.java |  6 +--
 .../apache/tinkerpop/machine/pipes/MapStep.java    |  4 +-
 .../org/apache/tinkerpop/machine/pipes/Pipes.java  | 18 ++++-----
 .../tinkerpop/machine/pipes/PipesProcessor.java}   | 13 +++++--
 .../org/apache/tinkerpop/machine/pipes/Step.java}  |  9 +++--
 .../apache/tinkerpop/machine/pipes/PipesTest.java  | 18 ++++-----
 32 files changed, 195 insertions(+), 127 deletions(-)

diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java 
b/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java
index 06b93bf..4021d08 100644
--- a/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java
+++ b/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java
@@ -19,19 +19,28 @@
 package org.apache.tinkerpop.language;
 
 import org.apache.tinkerpop.machine.bytecode.Bytecode;
+import org.apache.tinkerpop.machine.processor.Processor;
+import org.apache.tinkerpop.machine.processor.ProcessorFactory;
 import org.apache.tinkerpop.machine.traversers.Path;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
 /**
- * @author Marko S. Rodriguez (http://markorodriguez.com)
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class Traversal<C, S, E> {
+public class Traversal<C, S, E> implements Iterator<E> {
 
-    private final Bytecode<C> bytecode;
+    protected final Bytecode<C> bytecode;
     private C currentCoefficient;
+    private final ProcessorFactory factory;
+    private Processor<C, S, E> processor;
 
-    public Traversal(final C unity) {
+    public Traversal(final C unity, final ProcessorFactory factory) {
         this.currentCoefficient = unity;
         this.bytecode = new Bytecode<>();
+        this.factory = factory;
     }
 
     public Traversal<C, S, E> as(final String label) {
@@ -65,7 +74,7 @@ public class Traversal<C, S, E> {
     }
 
     public <R> Traversal<C, S, R> map(final Traversal<C, E, R> mapTraversal) {
-        this.bytecode.addInstruction(this.currentCoefficient, Symbols.MAP, 
mapTraversal.getBytecode());
+        this.bytecode.addInstruction(this.currentCoefficient, Symbols.MAP, 
mapTraversal.bytecode);
         return (Traversal) this;
     }
 
@@ -74,10 +83,29 @@ public class Traversal<C, S, E> {
         return (Traversal) this;
     }
 
+    private void setupProcessor() {
+        if (null == this.processor)
+            this.processor = this.factory.mint(this.bytecode);
+    }
 
-    // create a utility class that directly access the class field so we don't 
have to do the Admin stuff in TP4.
-    public Bytecode<C> getBytecode() {
-        return this.bytecode;
+    @Override
+    public boolean hasNext() {
+        this.setupProcessor();
+        return this.processor.hasNextTraverser();
     }
 
+    @Override
+    public E next() {
+        this.setupProcessor();
+        return this.processor.nextTraverser().object();
+    }
+
+    public List<E> toList() {
+        this.setupProcessor();
+        final List<E> list = new ArrayList<>();
+        while (this.hasNext()) {
+            list.add(this.next());
+        }
+        return list;
+    }
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/language/TraversalSource.java 
b/java/core/src/main/java/org/apache/tinkerpop/language/TraversalSource.java
index 01c145a..a268330 100644
--- a/java/core/src/main/java/org/apache/tinkerpop/language/TraversalSource.java
+++ b/java/core/src/main/java/org/apache/tinkerpop/language/TraversalSource.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.language;
 
+import org.apache.tinkerpop.machine.processor.ProcessorFactory;
 import org.apache.tinkerpop.machine.coefficients.Coefficients;
 import org.apache.tinkerpop.machine.coefficients.LongCoefficients;
 
@@ -27,6 +28,8 @@ import 
org.apache.tinkerpop.machine.coefficients.LongCoefficients;
 public class TraversalSource<C> {
 
     private Coefficients<C> coefficients = (Coefficients) new 
LongCoefficients();
+    private ProcessorFactory factory;
+
 
     protected TraversalSource() {
     }
@@ -36,8 +39,17 @@ public class TraversalSource<C> {
         return this;
     }
 
-    public <A> Traversal<C, A, A> inject(final A... objects) {
-        final Traversal<C, A, A> traversal = new 
Traversal<>(this.coefficients.unity());
+    public TraversalSource<C> processor(final Class<? extends 
ProcessorFactory> processor) {
+        try {
+            this.factory = processor.newInstance();
+        } catch (final Exception e) {
+            throw new RuntimeException(e.getMessage(), e);
+        }
+        return this;
+    }
+
+    public <S> Traversal<C, S, S> inject(final S... objects) {
+        final Traversal<C, S, S> traversal = new 
Traversal<>(this.coefficients.unity(), this.factory);
         return traversal.inject(objects);
     }
 }
diff --git a/java/core/src/main/java/org/apache/tinkerpop/language/__.java 
b/java/core/src/main/java/org/apache/tinkerpop/language/TraversalUtil.java
similarity index 77%
copy from java/core/src/main/java/org/apache/tinkerpop/language/__.java
copy to java/core/src/main/java/org/apache/tinkerpop/language/TraversalUtil.java
index e3c693e..758fb47 100644
--- a/java/core/src/main/java/org/apache/tinkerpop/language/__.java
+++ b/java/core/src/main/java/org/apache/tinkerpop/language/TraversalUtil.java
@@ -18,12 +18,19 @@
  */
 package org.apache.tinkerpop.language;
 
+import org.apache.tinkerpop.machine.bytecode.Bytecode;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class __ {
+public final class TraversalUtil {
+
+    private TraversalUtil() {
+        // do nothing
+    }
 
-    public static <C> Traversal<C, Long, Long> incr() {
-        return (Traversal) new Traversal<>(1L).incr();
+    public static <C> Bytecode<C> getBytecode(final Traversal<C, ?, ?> 
traversal) {
+        return traversal.bytecode;
     }
+
 }
diff --git a/java/core/src/main/java/org/apache/tinkerpop/language/__.java 
b/java/core/src/main/java/org/apache/tinkerpop/language/__.java
index e3c693e..95f69f9 100644
--- a/java/core/src/main/java/org/apache/tinkerpop/language/__.java
+++ b/java/core/src/main/java/org/apache/tinkerpop/language/__.java
@@ -18,12 +18,14 @@
  */
 package org.apache.tinkerpop.language;
 
+import org.apache.tinkerpop.machine.processor.EmptyProcessorFactory;
+
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public class __ {
 
     public static <C> Traversal<C, Long, Long> incr() {
-        return (Traversal) new Traversal<>(1L).incr();
+        return (Traversal) new Traversal<>(1L, 
EmptyProcessorFactory.instance()).incr();
     }
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/BytecodeUtil.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/BytecodeUtil.java
index d7773a8..204a7dd 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/BytecodeUtil.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/BytecodeUtil.java
@@ -21,9 +21,9 @@ package org.apache.tinkerpop.machine.bytecode;
 import org.apache.tinkerpop.language.Symbols;
 import org.apache.tinkerpop.machine.functions.CFunction;
 import org.apache.tinkerpop.machine.functions.filter.IdentityFilter;
-import org.apache.tinkerpop.machine.functions.map.IncrMap;
-import org.apache.tinkerpop.machine.functions.initial.InjectInitial;
 import org.apache.tinkerpop.machine.functions.filter.IsFilter;
+import org.apache.tinkerpop.machine.functions.initial.InjectInitial;
+import org.apache.tinkerpop.machine.functions.map.IncrMap;
 import org.apache.tinkerpop.machine.functions.map.MapMap;
 import org.apache.tinkerpop.machine.functions.map.PathMap;
 
@@ -46,7 +46,7 @@ public final class BytecodeUtil {
         return bytecode;
     }
 
-    public static <C> List<CFunction<C>> compile(final Bytecode<C> bytecode) 
throws Exception {
+    public static <C> List<CFunction<C>> compile(final Bytecode<C> bytecode) {
         final List<CFunction<C>> functions = new ArrayList<>();
         for (final Instruction<C> instruction : bytecode.getInstructions()) {
             functions.add(BytecodeUtil.generateFunction(instruction));
@@ -54,7 +54,7 @@ public final class BytecodeUtil {
         return functions;
     }
 
-    private static <C> CFunction<C> generateFunction(final Instruction<C> 
instruction) throws Exception {
+    private static <C> CFunction<C> generateFunction(final Instruction<C> 
instruction) {
         final String op = instruction.op();
         final C coefficient = instruction.coefficient();
         final Set<String> labels = instruction.labels();
@@ -72,7 +72,7 @@ public final class BytecodeUtil {
             case Symbols.PATH:
                 return new PathMap<>(coefficient, labels);
             default:
-                throw new Exception("This is an unknown instruction:" + 
instruction.op());
+                throw new RuntimeException("This is an unknown instruction:" + 
instruction.op());
         }
     }
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Instruction.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Instruction.java
index ae40b1f..2a5df83 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Instruction.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Instruction.java
@@ -19,6 +19,7 @@
 package org.apache.tinkerpop.machine.bytecode;
 
 import org.apache.tinkerpop.language.Traversal;
+import org.apache.tinkerpop.language.TraversalUtil;
 
 import java.util.Arrays;
 import java.util.HashSet;
@@ -62,7 +63,7 @@ public final class Instruction<C> {
 
     public void addArg(final Object arg) {
         this.args = Arrays.copyOf(this.args, this.args.length + 1);
-        this.args[this.args.length - 1] = arg instanceof Traversal ? 
((Traversal) arg).getBytecode() : arg;
+        this.args[this.args.length - 1] = arg instanceof Traversal ? 
TraversalUtil.getBytecode(((Traversal) arg)) : arg;
     }
 
     @Override
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/AbstractFunction.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/AbstractFunction.java
index 048980e..d759c97 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/AbstractFunction.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/AbstractFunction.java
@@ -25,7 +25,7 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public abstract class AbstractFunction<C> implements CFunction<C> {
+public abstract class AbstractFunction<C, S, E> implements CFunction<C> {
 
     protected final C coefficient;
     private Set<String> labels;
@@ -45,7 +45,7 @@ public abstract class AbstractFunction<C> implements 
CFunction<C> {
         return this.labels;
     }
 
-    protected <A> Traverser<C, A> postProcess(final Traverser<C, A> traverser) 
{
+    protected Traverser<C, E> postProcess(final Traverser<C, E> traverser) {
         for (final String label : labels) {
             traverser.addLabel(label);
         }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FilterFunction.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FilterFunction.java
index 64622d9..01def6b 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FilterFunction.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FilterFunction.java
@@ -25,5 +25,5 @@ import java.util.function.Predicate;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface FilterFunction<C, A> extends Predicate<Traverser<C, A>>, 
CFunction<C> {
+public interface FilterFunction<C, S> extends Predicate<Traverser<C, S>>, 
CFunction<C> {
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FlatMapFunction.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FlatMapFunction.java
index 8f5933b..3bc5d68 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FlatMapFunction.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FlatMapFunction.java
@@ -26,5 +26,5 @@ import java.util.function.Function;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface FlatMapFunction<C, A, B> extends Function<Traverser<C, A>, 
Iterator<Traverser<C, B>>>, CFunction<C> {
+public interface FlatMapFunction<C, S, E> extends Function<Traverser<C, S>, 
Iterator<Traverser<C, E>>>, CFunction<C> {
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InitialFunction.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InitialFunction.java
index f4430ce..d44c47b 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InitialFunction.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InitialFunction.java
@@ -26,5 +26,5 @@ import java.util.function.Supplier;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface InitialFunction<C,A> extends 
Supplier<Iterator<Traverser<C,A>>>, CFunction<C> {
+public interface InitialFunction<C, S> extends Supplier<Iterator<Traverser<C, 
S>>>, CFunction<C> {
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/MapFunction.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/MapFunction.java
index 55fb230..f5b5302 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/MapFunction.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/MapFunction.java
@@ -25,6 +25,6 @@ import java.util.function.Function;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface MapFunction<C, A, B> extends Function<Traverser<C, A>, 
Traverser<C, B>>, CFunction<C> {
+public interface MapFunction<C, S, E> extends Function<Traverser<C, S>, 
Traverser<C, E>>, CFunction<C> {
 
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/NestedFunction.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/NestedFunction.java
index f00abad..3ecfed6 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/NestedFunction.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/NestedFunction.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.machine.functions;
 
-import org.apache.tinkerpop.machine.Processor;
+import org.apache.tinkerpop.machine.processor.Processor;
 
 import java.util.List;
 
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/filter/IdentityFilter.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/filter/IdentityFilter.java
index cd385a7..42d77b7 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/filter/IdentityFilter.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/filter/IdentityFilter.java
@@ -27,7 +27,7 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class IdentityFilter<C, S> extends AbstractFunction<C> implements 
FilterFunction<C, S> {
+public class IdentityFilter<C, S> extends AbstractFunction<C,S,S> implements 
FilterFunction<C, S> {
 
     public IdentityFilter(final C coefficient, final Set<String> labels) {
         super(coefficient, labels);
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/filter/IsFilter.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/filter/IsFilter.java
index 2bcc74d..69a64df 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/filter/IsFilter.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/filter/IsFilter.java
@@ -27,17 +27,17 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class IsFilter<C, A> extends AbstractFunction<C> implements 
FilterFunction<C, A> {
+public class IsFilter<C, S> extends AbstractFunction<C, S, S> implements 
FilterFunction<C, S> {
 
-    private final A object;
+    private final S object;
 
-    public IsFilter(final C coefficient, final Set<String> labels, final A 
object) {
+    public IsFilter(final C coefficient, final Set<String> labels, final S 
object) {
         super(coefficient, labels);
         this.object = object;
     }
 
     @Override
-    public boolean test(final Traverser<C, A> traverser) {
+    public boolean test(final Traverser<C, S> traverser) {
         return traverser.object().equals(this.object);
     }
 
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/initial/InjectInitial.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/initial/InjectInitial.java
index f302df0..93f5d86 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/initial/InjectInitial.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/initial/InjectInitial.java
@@ -22,34 +22,30 @@ import 
org.apache.tinkerpop.machine.functions.AbstractFunction;
 import org.apache.tinkerpop.machine.functions.InitialFunction;
 import org.apache.tinkerpop.machine.traversers.Traverser;
 
-import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Set;
+import java.util.stream.Stream;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class InjectInitial<C, A> extends AbstractFunction<C> implements 
InitialFunction<C, A> {
+public class InjectInitial<C, S> extends AbstractFunction<C, S, S> implements 
InitialFunction<C, S> {
 
-    private final List<Traverser<C, A>> traversers;
+    private final S[] objects;
 
-    public InjectInitial(final C coefficient, final Set<String> labels, final 
A... objects) {
+    public InjectInitial(final C coefficient, final Set<String> labels, final 
S... objects) {
         super(coefficient, labels);
-        this.traversers = new ArrayList<>();
-        for (final A object : objects) {
-            this.traversers.add(new Traverser<>(this.coefficient, object));
-        }
-
+        this.objects = objects;
     }
 
     @Override
-    public Iterator<Traverser<C, A>> get() {
-        return this.traversers.iterator();
+    public Iterator<Traverser<C, S>> get() {
+        return Stream.of(this.objects).map(a -> new 
Traverser<>(this.coefficient, a)).iterator();
     }
 
     @Override
     public String toString() {
-        return "[" + this.coefficient + "]" + this.getClass().getSimpleName() 
+ ":" + this.traversers;
+        return "[" + this.coefficient + "]" + this.getClass().getSimpleName() 
+ ":" + Arrays.toString(this.objects);
     }
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/IncrMap.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/IncrMap.java
index 4c25bba..f0eb939 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/IncrMap.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/IncrMap.java
@@ -27,7 +27,7 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class IncrMap<C> extends AbstractFunction<C> implements MapFunction<C, 
Long, Long> {
+public class IncrMap<C> extends AbstractFunction<C, Long, Long> implements 
MapFunction<C, Long, Long> {
 
     public IncrMap(final C coefficient, final Set<String> labels) {
         super(coefficient, labels);
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/MapMap.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/MapMap.java
index 952038d..7d8a7bc 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/MapMap.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/MapMap.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.machine.functions.map;
 
-import org.apache.tinkerpop.machine.Processor;
+import org.apache.tinkerpop.machine.processor.Processor;
 import org.apache.tinkerpop.machine.functions.AbstractFunction;
 import org.apache.tinkerpop.machine.functions.CFunction;
 import org.apache.tinkerpop.machine.functions.MapFunction;
@@ -31,7 +31,7 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class MapMap<C, S, E> extends AbstractFunction<C> implements 
MapFunction<C, S, E>, NestedFunction<C, S, E> {
+public class MapMap<C, S, E> extends AbstractFunction<C,S,E> implements 
MapFunction<C, S, E>, NestedFunction<C, S, E> {
 
     private final List<CFunction<C>> mapFunctions;
     private Processor<C, S, E> processor;
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/PathMap.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/PathMap.java
index 9ba9f26..a8ee4e7 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/PathMap.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/PathMap.java
@@ -28,14 +28,14 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class PathMap<C, A> extends AbstractFunction<C> implements 
MapFunction<C, A, Path> {
+public class PathMap<C, S> extends AbstractFunction<C, S, Path> implements 
MapFunction<C, S, Path> {
 
     public PathMap(final C coefficient, final Set<String> labels) {
         super(coefficient, labels);
     }
 
     @Override
-    public Traverser<C, Path> apply(final Traverser<C, A> traverser) {
+    public Traverser<C, Path> apply(final Traverser<C, S> traverser) {
         return traverser.split(this.coefficient, traverser.path());
     }
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/IncrMap.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/EmptyProcessor.java
similarity index 58%
copy from 
java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/IncrMap.java
copy to 
java/core/src/main/java/org/apache/tinkerpop/machine/processor/EmptyProcessor.java
index 4c25bba..e22ab3e 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/map/IncrMap.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/EmptyProcessor.java
@@ -16,25 +16,42 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.machine.functions.map;
+package org.apache.tinkerpop.machine.processor;
 
-import org.apache.tinkerpop.machine.functions.AbstractFunction;
-import org.apache.tinkerpop.machine.functions.MapFunction;
 import org.apache.tinkerpop.machine.traversers.Traverser;
-
-import java.util.Set;
+import org.apache.tinkerpop.machine.util.FastNoSuchElementException;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class IncrMap<C> extends AbstractFunction<C> implements MapFunction<C, 
Long, Long> {
+public class EmptyProcessor<C, S, E> implements Processor<C, S, E> {
+
+    private static final EmptyProcessor INSTANCE = new EmptyProcessor();
+
+    private EmptyProcessor() {
+    }
+
+    @Override
+    public void addStart(Traverser<C, S> traverser) {
 
-    public IncrMap(final C coefficient, final Set<String> labels) {
-        super(coefficient, labels);
     }
 
     @Override
-    public Traverser<C, Long> apply(final Traverser<C, Long> traverser) {
-        return postProcess(traverser.split(traverser.coefficient(), 
traverser.object() + 1));
+    public Traverser<C, E> nextTraverser() {
+        throw FastNoSuchElementException.instance();
+    }
+
+    @Override
+    public boolean hasNextTraverser() {
+        return false;
+    }
+
+    @Override
+    public void reset() {
+
+    }
+
+    public static <C, S, E> EmptyProcessor<C, S, E> instance() {
+        return INSTANCE;
     }
 }
diff --git 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/MapStep.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/EmptyProcessorFactory.java
similarity index 64%
copy from 
java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/MapStep.java
copy to 
java/core/src/main/java/org/apache/tinkerpop/machine/processor/EmptyProcessorFactory.java
index 21a953b..89233df 100644
--- 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/MapStep.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/EmptyProcessorFactory.java
@@ -16,22 +16,27 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.machine.pipes;
+package org.apache.tinkerpop.machine.processor;
 
-import org.apache.tinkerpop.machine.functions.MapFunction;
-import org.apache.tinkerpop.machine.traversers.Traverser;
+import org.apache.tinkerpop.machine.bytecode.Bytecode;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class MapStep<C, S, E> extends AbstractStep<C, S, E> {
+public class EmptyProcessorFactory implements ProcessorFactory {
+
+    private static final EmptyProcessorFactory INSTANCE = new 
EmptyProcessorFactory();
+
+    private EmptyProcessorFactory() {
 
-    public MapStep(final AbstractStep previousStep, final MapFunction<C, S, E> 
mapFunction) {
-        super(previousStep, mapFunction);
     }
 
     @Override
-    public Traverser<C, E> next() {
-        return ((MapFunction<C, S, E>) 
this.function).apply(super.getNextTraverser());
+    public <C, S, E> Processor<C, S, E> mint(final Bytecode<C> bytecode) {
+        return EmptyProcessor.instance();
+    }
+
+    public static EmptyProcessorFactory instance() {
+        return INSTANCE;
     }
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/Processor.java 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/Processor.java
similarity index 95%
rename from java/core/src/main/java/org/apache/tinkerpop/machine/Processor.java
rename to 
java/core/src/main/java/org/apache/tinkerpop/machine/processor/Processor.java
index b068e01..09fe2b7 100644
--- a/java/core/src/main/java/org/apache/tinkerpop/machine/Processor.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/Processor.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.machine;
+package org.apache.tinkerpop.machine.processor;
 
 import org.apache.tinkerpop.machine.traversers.Traverser;
 
diff --git a/java/core/src/main/java/org/apache/tinkerpop/language/__.java 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/ProcessorFactory.java
similarity index 80%
copy from java/core/src/main/java/org/apache/tinkerpop/language/__.java
copy to 
java/core/src/main/java/org/apache/tinkerpop/machine/processor/ProcessorFactory.java
index e3c693e..9eeed95 100644
--- a/java/core/src/main/java/org/apache/tinkerpop/language/__.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/processor/ProcessorFactory.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.language;
+package org.apache.tinkerpop.machine.processor;
+
+import org.apache.tinkerpop.machine.bytecode.Bytecode;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class __ {
+public interface ProcessorFactory {
 
-    public static <C> Traversal<C, Long, Long> incr() {
-        return (Traversal) new Traversal<>(1L).incr();
-    }
+    public <C, S, E> Processor<C, S, E> mint(final Bytecode<C> bytecode);
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/traversers/Traverser.java
 
b/java/core/src/main/java/org/apache/tinkerpop/machine/traversers/Traverser.java
index 6bd2ea1..f7a94e3 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/traversers/Traverser.java
+++ 
b/java/core/src/main/java/org/apache/tinkerpop/machine/traversers/Traverser.java
@@ -24,13 +24,13 @@ import java.util.HashSet;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class Traverser<C, A> {
+public class Traverser<C, S> {
 
     private final C coefficient;
-    private final A object;
+    private final S object;
     private Path path = new Path();
 
-    public Traverser(final C coefficient, final A object) {
+    public Traverser(final C coefficient, final S object) {
         this.coefficient = coefficient;
         this.object = object;
     }
@@ -39,7 +39,7 @@ public class Traverser<C, A> {
         return this.coefficient;
     }
 
-    public A object() {
+    public S object() {
         return this.object;
     }
 
@@ -60,7 +60,7 @@ public class Traverser<C, A> {
 
     @Override
     public boolean equals(final Object other) {
-        return other instanceof Traverser && ((Traverser<C, A>) 
other).object.equals(this.object);
+        return other instanceof Traverser && ((Traverser<C, S>) 
other).object.equals(this.object);
     }
 
     @Override
diff --git 
a/java/core/src/test/java/org/apache/tinkerpop/machine/TraversalTest.java 
b/java/core/src/test/java/org/apache/tinkerpop/machine/TraversalTest.java
index d54b40b..0b0c7ba 100644
--- a/java/core/src/test/java/org/apache/tinkerpop/machine/TraversalTest.java
+++ b/java/core/src/test/java/org/apache/tinkerpop/machine/TraversalTest.java
@@ -23,7 +23,6 @@ import org.apache.tinkerpop.language.Traversal;
 import org.apache.tinkerpop.language.TraversalSource;
 import org.apache.tinkerpop.language.__;
 import org.apache.tinkerpop.machine.coefficients.LongCoefficients;
-import org.apache.tinkerpop.machine.bytecode.BytecodeUtil;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -36,7 +35,7 @@ public class TraversalTest {
         TraversalSource<Long> g = Gremlin.traversal();
         g = g.coefficients(LongCoefficients.instance());
         final Traversal<Long, Long, Long> traversal = 
g.inject(7L).is(7L).incr().as("a").is(8L).by(__.incr());
-        System.out.println(traversal.getBytecode());
-        System.out.println(BytecodeUtil.compile(traversal.getBytecode()));
+        //System.out.println(traversal.bytecode);
+        //System.out.println(BytecodeUtil.compile(traversal.getBytecode()));
     }
 }
diff --git 
a/java/core/src/test/java/org/apache/tinkerpop/machine/compiler/BytecodeUtilTest.java
 
b/java/core/src/test/java/org/apache/tinkerpop/machine/compiler/BytecodeUtilTest.java
index c5551ba..51b819e 100644
--- 
a/java/core/src/test/java/org/apache/tinkerpop/machine/compiler/BytecodeUtilTest.java
+++ 
b/java/core/src/test/java/org/apache/tinkerpop/machine/compiler/BytecodeUtilTest.java
@@ -19,6 +19,7 @@
 package org.apache.tinkerpop.machine.compiler;
 
 import org.apache.tinkerpop.language.Traversal;
+import org.apache.tinkerpop.machine.processor.EmptyProcessorFactory;
 import org.apache.tinkerpop.machine.bytecode.BytecodeUtil;
 import org.junit.jupiter.api.Test;
 
@@ -29,9 +30,9 @@ public class BytecodeUtilTest {
 
     @Test
     public void shouldHaveBytecode() throws Exception {
-        final Traversal<Long, Long, Long> traversal = new Traversal<>(1L);
+        final Traversal<Long, Long, Long> traversal = new Traversal<>(1L, 
EmptyProcessorFactory.instance());
         traversal.incr().is(2L);
-        System.out.println(traversal.getBytecode());
-        System.out.println(BytecodeUtil.compile(traversal.getBytecode()));
+        //System.out.println(traversal.bytecode);
+        //System.out.println(BytecodeUtil.compile(traversal.getBytecode()));
     }
 }
diff --git 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/AbstractStep.java
 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/AbstractStep.java
index 72a81b2..2103b96 100644
--- 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/AbstractStep.java
+++ 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/AbstractStep.java
@@ -23,15 +23,13 @@ import org.apache.tinkerpop.machine.traversers.Traverser;
 import org.apache.tinkerpop.machine.traversers.TraverserSet;
 import org.apache.tinkerpop.machine.util.FastNoSuchElementException;
 
-import java.util.Iterator;
-
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public abstract class AbstractStep<C, S, E> implements Iterator<Traverser<C, 
E>> {
+public abstract class AbstractStep<C, S, E> implements Step<C, S, E> {
 
     protected final CFunction<C> function;
-    protected final AbstractStep previousStep;
+    protected final AbstractStep<C, ?, S> previousStep;
     protected TraverserSet<C, S> traverserSet = new TraverserSet<>();
 
     public AbstractStep(final AbstractStep<C, ?, S> previousStep, final 
CFunction<C> function) {
@@ -51,15 +49,13 @@ public abstract class AbstractStep<C, S, E> implements 
Iterator<Traverser<C, E>>
     @Override
     public abstract Traverser<C, E> next();
 
-    protected Traverser<C, S> getNextTraverser() {
-        Traverser<C, S> traverser = null;
+    protected Traverser<C, S> processNextTraverser() {
         if (!this.traverserSet.isEmpty())
-            traverser = this.traverserSet.remove();
+            return this.traverserSet.remove();
         else if (this.previousStep.hasNext())
-            traverser = this.previousStep.next();
-        if (null == traverser)
+            return this.previousStep.next();
+        else
             throw FastNoSuchElementException.instance();
-        return traverser;
     }
 
     @Override
diff --git 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/FilterStep.java
 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/FilterStep.java
index 19d54e7..eb1d1e2 100644
--- 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/FilterStep.java
+++ 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/FilterStep.java
@@ -26,17 +26,17 @@ import org.apache.tinkerpop.machine.traversers.Traverser;
  */
 public class FilterStep<C, S> extends AbstractStep<C, S, S> {
 
-    public FilterStep(final AbstractStep previousStep, final FilterFunction<C, 
S> filterFunction) {
+    public FilterStep(final AbstractStep<C, ?, S> previousStep, final 
FilterFunction<C, S> filterFunction) {
         super(previousStep, filterFunction);
     }
 
     @Override
     public Traverser<C, S> next() {
-        Traverser<C, S> traverser = this.getNextTraverser();
+        Traverser<C, S> traverser;
         while (true) {
+            traverser = this.processNextTraverser();
             if (((FilterFunction<C, S>) this.function).test(traverser))
                 return traverser;
-            traverser = this.getNextTraverser();
         }
     }
 }
diff --git 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/MapStep.java
 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/MapStep.java
index 21a953b..1216491 100644
--- 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/MapStep.java
+++ 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/MapStep.java
@@ -26,12 +26,12 @@ import org.apache.tinkerpop.machine.traversers.Traverser;
  */
 public class MapStep<C, S, E> extends AbstractStep<C, S, E> {
 
-    public MapStep(final AbstractStep previousStep, final MapFunction<C, S, E> 
mapFunction) {
+    public MapStep(final AbstractStep<C, ?, S> previousStep, final 
MapFunction<C, S, E> mapFunction) {
         super(previousStep, mapFunction);
     }
 
     @Override
     public Traverser<C, E> next() {
-        return ((MapFunction<C, S, E>) 
this.function).apply(super.getNextTraverser());
+        return ((MapFunction<C, S, E>) 
this.function).apply(super.processNextTraverser());
     }
 }
diff --git 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Pipes.java
 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Pipes.java
index 775a50b..c7a57eb 100644
--- 
a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Pipes.java
+++ 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Pipes.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.machine.pipes;
 
-import org.apache.tinkerpop.machine.Processor;
+import org.apache.tinkerpop.machine.processor.Processor;
 import org.apache.tinkerpop.machine.bytecode.Bytecode;
 import org.apache.tinkerpop.machine.bytecode.BytecodeUtil;
 import org.apache.tinkerpop.machine.functions.CFunction;
@@ -38,19 +38,19 @@ import java.util.List;
 public class Pipes<C, S, E> implements Iterator<E>, Processor<C, S, E> {
 
     private final List<AbstractStep<?, ?, ?>> steps = new ArrayList<>();
-    private AbstractStep<C, ?, E> endStep;
-    private AbstractStep<C, S, ?> startStep = EmptyStep.instance();
+    private Step<C, ?, E> endStep;
+    private Step<C, S, ?> startStep = EmptyStep.instance();
 
     private Pipes(final List<CFunction<C>> functions) {
-        AbstractStep previousStep = EmptyStep.instance();
+        AbstractStep<C, ?, ?> previousStep = EmptyStep.instance();
         for (final CFunction<?> function : functions) {
             if (function instanceof NestedFunction)
-                ((NestedFunction<C, S, E>) function).setProcessor(new 
Pipes<>(((NestedFunction<C, S, E>) function).getFunctions()));
+                ((NestedFunction<C, ?, ?>) function).setProcessor(new 
Pipes<>(((NestedFunction<C, ?, ?>) function).getFunctions()));
             final AbstractStep nextStep;
             if (function instanceof FilterFunction)
-                nextStep = new FilterStep<>(previousStep, (FilterFunction<C, 
?>) function);
+                nextStep = new FilterStep(previousStep, (FilterFunction<C, ?>) 
function);
             else if (function instanceof MapFunction)
-                nextStep = new MapStep<>(previousStep, (MapFunction<C, ?, ?>) 
function);
+                nextStep = new MapStep(previousStep, (MapFunction<C, ?, ?>) 
function);
             else if (function instanceof InitialFunction)
                 nextStep = new InitialStep<>((InitialFunction<C, S>) function);
             else
@@ -62,10 +62,10 @@ public class Pipes<C, S, E> implements Iterator<E>, 
Processor<C, S, E> {
             this.steps.add(nextStep);
             previousStep = nextStep;
         }
-        this.endStep = previousStep;
+        this.endStep = (Step<C, ?, E>) previousStep;
     }
 
-    public Pipes(final Bytecode<C> bytecode) throws Exception {
+    public Pipes(final Bytecode<C> bytecode) {
         this(BytecodeUtil.compile(BytecodeUtil.optimize(bytecode)));
     }
 
diff --git a/java/core/src/main/java/org/apache/tinkerpop/language/__.java 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/PipesProcessor.java
similarity index 68%
copy from java/core/src/main/java/org/apache/tinkerpop/language/__.java
copy to 
java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/PipesProcessor.java
index e3c693e..14f2e7a 100644
--- a/java/core/src/main/java/org/apache/tinkerpop/language/__.java
+++ 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/PipesProcessor.java
@@ -16,14 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.language;
+package org.apache.tinkerpop.machine.pipes;
+
+import org.apache.tinkerpop.machine.processor.Processor;
+import org.apache.tinkerpop.machine.processor.ProcessorFactory;
+import org.apache.tinkerpop.machine.bytecode.Bytecode;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class __ {
+public class PipesProcessor implements ProcessorFactory {
 
-    public static <C> Traversal<C, Long, Long> incr() {
-        return (Traversal) new Traversal<>(1L).incr();
+    @Override
+    public <C, S, E> Processor<C, S, E> mint(final Bytecode<C> bytecode) {
+        return new Pipes<>(bytecode);
     }
 }
diff --git 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FlatMapFunction.java
 b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Step.java
similarity index 82%
copy from 
java/core/src/main/java/org/apache/tinkerpop/machine/functions/FlatMapFunction.java
copy to 
java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Step.java
index 8f5933b..a24d037 100644
--- 
a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FlatMapFunction.java
+++ 
b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Step.java
@@ -16,15 +16,18 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tinkerpop.machine.functions;
+package org.apache.tinkerpop.machine.pipes;
 
 import org.apache.tinkerpop.machine.traversers.Traverser;
 
 import java.util.Iterator;
-import java.util.function.Function;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface FlatMapFunction<C, A, B> extends Function<Traverser<C, A>, 
Iterator<Traverser<C, B>>>, CFunction<C> {
+public interface Step<C, S, E> extends Iterator<Traverser<C, E>> {
+
+    public void addTraverser(final Traverser<C, S> traverser);
+
+    // public void reset();
 }
diff --git 
a/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java
 
b/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java
index 97835e2..e102e6c 100644
--- 
a/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java
+++ 
b/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java
@@ -19,8 +19,8 @@
 package org.apache.tinkerpop.machine.pipes;
 
 import org.apache.tinkerpop.language.Gremlin;
-import org.apache.tinkerpop.language.Traversal;
 import org.apache.tinkerpop.language.TraversalSource;
+import org.apache.tinkerpop.language.TraversalUtil;
 import org.apache.tinkerpop.language.__;
 import org.apache.tinkerpop.machine.coefficients.LongCoefficients;
 import org.junit.jupiter.api.Test;
@@ -31,15 +31,11 @@ import org.junit.jupiter.api.Test;
 public class PipesTest {
 
     @Test
-    public void shouldWork() throws Exception {
-        final TraversalSource<Long> g = 
Gremlin.<Long>traversal().coefficients(LongCoefficients.instance());
-        //final Traversal<Long, Long, Long> traversal = g.inject(7L, 10L, 
12L).incr().incr().incr();
-        //final Pipes pipes = new Pipes<Long, Long, 
Long>(traversal.getBytecode());
-        //System.out.println(pipes.hasNext());
-        //System.out.println(pipes.toList());
-        //System.out.println(pipes.hasNext());
-        System.out.println(g.inject(7L, 10L, 
12L).map(__.incr()).identity().getBytecode());
-        System.out.println(new Pipes<>(g.inject(7L, 10L, 
12L).map(__.incr()).identity().getBytecode()));
-        System.out.println(new Pipes<>(g.inject(7L, 10L, 
12L).map(__.incr()).identity().getBytecode()).toList());
+    public void shouldWork() {
+        final TraversalSource<Long> g = Gremlin.<Long>traversal()
+                .coefficients(LongCoefficients.instance())
+                .processor(PipesProcessor.class);
+        System.out.println(g.inject(7L, 10L, 
12L).map(__.incr()).identity().toList());
+        System.out.println(TraversalUtil.getBytecode(g.inject(7L, 10L, 
12L).map(__.incr()).identity()));
     }
 }

Reply via email to