[tinkerpop] branch tp4 updated: incr is gone. random other tweaks. taking a break.
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 The following commit(s) were added to refs/heads/tp4 by this push: new 201d03d incr is gone. random other tweaks. taking a break. 201d03d is described below commit 201d03d8ef1e398c49079bd0e432f876f3ae4107 Author: Marko A. Rodriguez AuthorDate: Sat Mar 23 10:38:32 2019 -0600 incr is gone. random other tweaks. taking a break. --- .../tinkerpop/language/gremlin/Traversal.java | 7 +++- .../tinkerpop/machine/bytecode/CoreCompiler.java | 9 ++--- .../tinkerpop/machine/bytecode/MethodArgument.java | 8 - .../machine/function/filter/FilterFilter.java | 4 ++- .../tinkerpop/machine/function/map/IncrMap.java| 42 -- .../machine/processor/pipes/PipesTest.java | 9 +++-- 6 files changed, 26 insertions(+), 53 deletions(-) diff --git a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java index c7214bd..8bc4e92 100644 --- a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java +++ b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java @@ -211,7 +211,7 @@ public class Traversal implements Iterator { } public Traversal incr() { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.INCR); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.MAP, "number::add", 1L); return (Traversal) this; } @@ -280,6 +280,11 @@ public class Traversal implements Iterator { return this; } +public Traversal value(final K key) { +this.bytecode.addInstruction(this.currentCoefficient, Symbols.MAP, "dictionary::get", key); +return (Traversal) this; +} + /// private final void prepareTraversal() { diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java index 359e6e7..32590a0 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java @@ -27,7 +27,6 @@ import org.apache.tinkerpop.machine.function.branch.RepeatBranch; import org.apache.tinkerpop.machine.function.filter.FilterFilter; import org.apache.tinkerpop.machine.function.flatmap.FlatmapFlatmap; import org.apache.tinkerpop.machine.function.initial.InjectInitial; -import org.apache.tinkerpop.machine.function.map.IncrMap; import org.apache.tinkerpop.machine.function.map.MapMap; import org.apache.tinkerpop.machine.function.map.PathMap; import org.apache.tinkerpop.machine.function.reduce.GroupCountReduce; @@ -59,7 +58,6 @@ public final class CoreCompiler implements BytecodeCompiler { put(Symbols.FILTER, FunctionType.FILTER); put(Symbols.FLATMAP, FunctionType.FLATMAP); put(Symbols.GROUP_COUNT, FunctionType.REDUCE); -put(Symbols.INCR, FunctionType.MAP); put(Symbols.INITIAL, FunctionType.INITIAL); put(Symbols.JOIN, FunctionType.BARRIER); put(Symbols.MAP, FunctionType.MAP); @@ -80,15 +78,15 @@ public final class CoreCompiler implements BytecodeCompiler { case Symbols.BRANCH: return new BranchBranch<>(coefficient, labels, BranchBranch.makeBranches(instruction.args())); case Symbols.FILTER: -return new FilterFilter<>(coefficient, labels, Pred.valueOf(instruction.args()[0]), Argument.create(Arrays.copyOfRange(instruction.args(), 1, instruction.args().length))); +return instruction.args().length == 1 ? +new FilterFilter<>(coefficient, labels, null, Argument.create(instruction.args())) : +new FilterFilter<>(coefficient, labels, Pred.valueOf(instruction.args()[0]), Argument.create(Arrays.copyOfRange(instruction.args(), 1, instruction.args().length))); case Symbols.FLATMAP: return new FlatmapFlatmap<>(coefficient, labels, Argument.create(instruction.args())); case Symbols.GROUP_COUNT: return new GroupCountReduce<>(coefficient, labels, Compilation.compileOrNull(0, instruction.args())); case Symbols.INITIAL: return new InjectInitial<>(coefficient, labels, instruction.args()); -case Symbols.INCR: -return new IncrMap<>(coefficient, labels); case Symbols.JOIN: return new JoinBarrier<>(coefficient, labels, (Symbols.Tokens) instruction.args()[0], Compilation.compileOne(instruction.args()[1]),
[tinkerpop] branch tp4 updated: identity() is now a map(traverser::object). Now Map, Filter, FlatMap, Reduce, and Branch are self-consistent.
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 The following commit(s) were added to refs/heads/tp4 by this push: new 635eeca identity() is now a map(traverser::object). Now Map, Filter, FlatMap, Reduce, and Branch are self-consistent. 635eeca is described below commit 635eecaf3be3cb37a550ef284ff54c65ab27dae9 Author: Marko A. Rodriguez AuthorDate: Sat Mar 23 09:06:42 2019 -0600 identity() is now a map(traverser::object). Now Map, Filter, FlatMap, Reduce, and Branch are self-consistent. --- .../main/java/org/apache/tinkerpop/language/gremlin/Traversal.java | 2 +- .../java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java | 4 +--- .../org/apache/tinkerpop/machine/function/filter/FilterFilter.java | 4 +--- .../tinkerpop/machine/strategy/optimization/IdentityStrategy.java| 5 +++-- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java index 8525d92..c7214bd 100644 --- a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java +++ b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java @@ -191,7 +191,7 @@ public class Traversal implements Iterator { } public Traversal identity() { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.FILTER, Boolean.TRUE); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.MAP, "traverser::object"); return this; } diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java index c692651..359e6e7 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java @@ -80,9 +80,7 @@ public final class CoreCompiler implements BytecodeCompiler { case Symbols.BRANCH: return new BranchBranch<>(coefficient, labels, BranchBranch.makeBranches(instruction.args())); case Symbols.FILTER: -return instruction.args().length == 1 ? -new FilterFilter<>(coefficient, labels, null, Argument.create(instruction.args())) : -new FilterFilter<>(coefficient, labels, Pred.valueOf(instruction.args()[0]), Argument.create(Arrays.copyOfRange(instruction.args(), 1, instruction.args().length))); +return new FilterFilter<>(coefficient, labels, Pred.valueOf(instruction.args()[0]), Argument.create(Arrays.copyOfRange(instruction.args(), 1, instruction.args().length))); case Symbols.FLATMAP: return new FlatmapFlatmap<>(coefficient, labels, Argument.create(instruction.args())); case Symbols.GROUP_COUNT: diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java index d93a420..df39450 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java @@ -45,9 +45,7 @@ public final class FilterFilter extends AbstractFunction implements Fil @Override public boolean test(final Traverser traverser) { -return null == this.pred ? -this.argument.filterArg(traverser) : -this.pred.test(traverser.object(), this.argument.mapArg(traverser)); +return this.pred.test(traverser.object(), this.argument.mapArg(traverser)); } @Override diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/optimization/IdentityStrategy.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/optimization/IdentityStrategy.java index 6c1bd99..db223b9 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/optimization/IdentityStrategy.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/strategy/optimization/IdentityStrategy.java @@ -31,8 +31,9 @@ public final class IdentityStrategy extends AbstractStrategy void apply(final Bytecode bytecode) { bytecode.getInstructions().removeIf(instruction -> -instruction.op().equals(CoreCompiler.Symbols.FILTER) && -Boolean.TRUE.equals(instruction.args()[0]) && +
[tinkerpop] branch tp4 updated: has() and hasKey() are now primitive instructions. All that is left is groupCount and path.
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 The following commit(s) were added to refs/heads/tp4 by this push: new 99ca3bd has() and hasKey() are now primitive instructions. All that is left is groupCount and path. 99ca3bd is described below commit 99ca3bd36237ba1779474989fa064de8b0a48f9e Author: Marko A. Rodriguez AuthorDate: Sat Mar 23 08:53:13 2019 -0600 has() and hasKey() are now primitive instructions. All that is left is groupCount and path. --- .../tinkerpop/language/gremlin/Traversal.java | 46 +++ .../tinkerpop/machine/bytecode/Argument.java | 13 +++-- .../tinkerpop/machine/bytecode/CoreCompiler.java | 22 ++-- .../tinkerpop/machine/bytecode/MethodArgument.java | 19 ++- .../machine/function/filter/FilterFilter.java | 8 +-- .../machine/function/filter/HasKeyFilter.java | 65 -- .../machine/function/filter/HasKeyValueFilter.java | 56 --- .../machine/function/reduce/ReduceReduce.java | 7 +-- .../machine/processor/pipes/PipesTest.java | 5 ++ 9 files changed, 75 insertions(+), 166 deletions(-) diff --git a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java index 28a93c1..8525d92 100644 --- a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java +++ b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java @@ -103,7 +103,8 @@ public class Traversal implements Iterator { } public Traversal count() { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.REDUCE, "traverser::count", Oper.sum.name(), 0L); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.MAP, "traverser::count"); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.REDUCE, Oper.sum.name(), 0L); return (Traversal) this; } @@ -134,37 +135,58 @@ public class Traversal implements Iterator { } public Traversal> hasKey(final P predicate) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.HAS_KEY, predicate.type().name(), TraversalUtil.tryToGetBytecode(predicate.object())); +final Bytecode internal = new Bytecode<>(); +internal.addInstruction(this.currentCoefficient, Symbols.FLATMAP, "dictionary::keys"); +internal.addInstruction(this.currentCoefficient, Symbols.FILTER, predicate.type().name(), TraversalUtil.tryToGetBytecode(predicate.object())); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.FILTER, internal); return (Traversal) this; } public Traversal> hasKey(final K key) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.HAS_KEY, Pred.eq.name(), key); +final Bytecode internal = new Bytecode<>(); +internal.addInstruction(this.currentCoefficient, Symbols.FLATMAP, "dictionary::keys"); +internal.addInstruction(this.currentCoefficient, Symbols.FILTER, Pred.eq.name(), key); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.FILTER, internal); return (Traversal) this; } public Traversal> hasKey(final Traversal, K> keyTraversal) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.HAS_KEY, Pred.eq.name(), keyTraversal.bytecode); +final Bytecode internal = new Bytecode<>(); +internal.addInstruction(this.currentCoefficient, Symbols.FLATMAP, "dictionary::keys"); +internal.addInstruction(this.currentCoefficient, Symbols.FILTER, Pred.eq.name(), keyTraversal.bytecode); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.FILTER, internal); return (Traversal) this; } public Traversal> has(final K key, final V value) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.HAS_KEY_VALUE, key, value); +final Bytecode internal = new Bytecode<>(); +internal.addInstruction(this.currentCoefficient, Symbols.MAP, "dictionary::get", TraversalUtil.tryToGetBytecode(key)); +internal.addInstruction(this.currentCoefficient, Symbols.FILTER, Pred.eq.name(), value); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.FILTER, internal); return (Traversal) this; } public Traversal> has(final Traversal, K> keyTraversal, final V value) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.HAS_KEY_VALUE, keyTraversal.bytecode, value); +final Bytecode internal = new Bytecode<>(); +internal.addInstruction(this.currentCoefficient, Symbols.MAP, "dictionary::get", keyTraversal.bytecode); +internal.addInstruction(this.currentCoefficient,
[tinkerpop] branch tp4 updated: really widdling down the functions... this is so crazy.
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 The following commit(s) were added to refs/heads/tp4 by this push: new 38d8f8e really widdling down the functions... this is so crazy. 38d8f8e is described below commit 38d8f8e316522578cab85c61c664301182b0d22d Author: Marko A. Rodriguez AuthorDate: Sat Mar 23 08:04:38 2019 -0600 really widdling down the functions... this is so crazy. --- .../tinkerpop/language/gremlin/Traversal.java | 19 .../tinkerpop/machine/bytecode/Argument.java | 36 --- .../BytecodeArgument.java} | 28 ++- .../ConstantArgument.java} | 23 - .../tinkerpop/machine/bytecode/CoreCompiler.java | 47 ++- .../MethodArgument.java} | 31 ++--- .../map/LoopsMap.java => bytecode/Oper.java} | 29 ++-- .../machine/function/filter/FilterFilter.java | 12 - .../machine/function/filter/HasKeyValueFilter.java | 1 + .../machine/function/filter/IsFilter.java | 54 -- .../{UnfoldFlatMap.java => FlatmapFlatmap.java}| 12 +++-- .../reduce/{SumReduce.java => ReduceReduce.java} | 22 ++--- .../machine/processor/pipes/PipesTest.java | 6 +-- 13 files changed, 124 insertions(+), 196 deletions(-) diff --git a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java index 783f35f..28a93c1 100644 --- a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java +++ b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java @@ -22,6 +22,7 @@ import org.apache.tinkerpop.machine.bytecode.Bytecode; import org.apache.tinkerpop.machine.bytecode.BytecodeUtil; import org.apache.tinkerpop.machine.bytecode.Compilation; import org.apache.tinkerpop.machine.bytecode.CoreCompiler.Symbols; +import org.apache.tinkerpop.machine.bytecode.Oper; import org.apache.tinkerpop.machine.bytecode.Pred; import org.apache.tinkerpop.machine.coefficient.Coefficient; import org.apache.tinkerpop.machine.coefficient.LongCoefficient; @@ -86,12 +87,12 @@ public class Traversal implements Iterator { return this; } -public Traversal choose(final Traversal predicate, final Traversal trueTraversal, final Traversal falseTraversal) { +public Traversal choose(final Traversal predicate, final Traversal trueTraversal, final Traversal falseTraversal) { this.bytecode.addInstruction(this.currentCoefficient, Symbols.BRANCH, predicate.bytecode, trueTraversal.bytecode, Symbols.DEFAULT, falseTraversal.bytecode); return (Traversal) this; } -public Traversal choose(final Traversal predicate, final Traversal trueTraversal) { +public Traversal choose(final Traversal predicate, final Traversal trueTraversal) { this.bytecode.addInstruction(this.currentCoefficient, Symbols.BRANCH, predicate.bytecode, trueTraversal.bytecode); return (Traversal) this; } @@ -102,7 +103,7 @@ public class Traversal implements Iterator { } public Traversal count() { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.COUNT); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.REDUCE, "traverser::count", Oper.sum.name(), 0L); return (Traversal) this; } @@ -173,17 +174,17 @@ public class Traversal implements Iterator { } public Traversal is(final E object) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.IS, Pred.eq.name(), object); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.FILTER, "traverser::object", Pred.eq.name(), object); return this; } public Traversal is(final Traversal objectTraversal) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.IS, Pred.eq.name(), objectTraversal.bytecode); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.FILTER, "traverser::object", Pred.eq.name(), objectTraversal.bytecode); return this; } public Traversal is(final P predicate) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.IS, predicate.type().name(), TraversalUtil.tryToGetBytecode(predicate.object())); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.FILTER, "traverser::object", predicate.type().name(), TraversalUtil.tryToGetBytecode(predicate.object())); return this; } @@ -198,7 +199,7 @@ public class Traversal implements Iterator { } public Traversal loops() { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.LOOPS); +
[tinkerpop] branch tp4 updated: per discussions with @dkuppitz, working towards making bytecode map, flatmap, branch, reduce, filter instructions ONLY. The TP4 Machine supports a very tiny instruction
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 The following commit(s) were added to refs/heads/tp4 by this push: new 5b2934a per discussions with @dkuppitz, working towards making bytecode map, flatmap, branch, reduce, filter instructions ONLY. The TP4 Machine supports a very tiny instruction set that can, at compile time, be strategized into processor specific functions (optimizations). This is crazy stuff, but if it works, it will be brilliant. 5b2934a is described below commit 5b2934af091e5acdccfeaa8b3e602dc1456a1cd7 Author: Marko A. Rodriguez AuthorDate: Sat Mar 23 05:37:26 2019 -0600 per discussions with @dkuppitz, working towards making bytecode map, flatmap, branch, reduce, filter instructions ONLY. The TP4 Machine supports a very tiny instruction set that can, at compile time, be strategized into processor specific functions (optimizations). This is crazy stuff, but if it works, it will be brilliant. --- .../tinkerpop/language/gremlin/Traversal.java | 12 ++-- .../language/gremlin/TraversalSource.java | 2 +- .../tinkerpop/machine/bytecode/Argument.java | 6 +- .../tinkerpop/machine/bytecode/CoreCompiler.java | 43 - .../tinkerpop/machine/function/BranchFunction.java | 5 +- .../machine/function/barrier/JoinBarrier.java | 2 +- .../branch/{UnionBranch.java => BranchBranch.java} | 39 ++-- .../machine/function/branch/IfBranch.java | 72 -- .../machine/function/filter/FilterFilter.java | 12 ++-- .../machine/function/filter/HasKeyFilter.java | 4 +- .../machine/function/filter/HasKeyValueFilter.java | 2 +- .../machine/function/filter/IdentityFilter.java| 41 .../machine/function/filter/IsFilter.java | 2 +- .../tinkerpop/machine/function/map/MapMap.java | 12 ++-- .../strategy/decoration/ExplainStrategy.java | 2 +- .../strategy/optimization/IdentityStrategy.java| 3 +- .../machine/bytecode/InstructionTest.java | 10 +-- .../machine/bytecode/SourceInstructionTest.java| 8 +-- .../tinkerpop/machine/processor/beam/BranchFn.java | 36 +++ .../machine/processor/beam/util/TopologyUtil.java | 45 -- .../tinkerpop/machine/processor/beam/BeamTest.java | 5 +- .../machine/processor/pipes/BranchStep.java| 30 + .../tinkerpop/machine/processor/pipes/Pipes.java | 2 +- .../machine/processor/pipes/PipesTest.java | 7 ++- 24 files changed, 152 insertions(+), 250 deletions(-) diff --git a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java index 15adece..783f35f 100644 --- a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java +++ b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java @@ -87,17 +87,17 @@ public class Traversal implements Iterator { } public Traversal choose(final Traversal predicate, final Traversal trueTraversal, final Traversal falseTraversal) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.IF, predicate.bytecode, trueTraversal.bytecode, falseTraversal.bytecode); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.BRANCH, predicate.bytecode, trueTraversal.bytecode, Symbols.DEFAULT, falseTraversal.bytecode); return (Traversal) this; } public Traversal choose(final Traversal predicate, final Traversal trueTraversal) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.IF, predicate.bytecode, trueTraversal.bytecode); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.BRANCH, predicate.bytecode, trueTraversal.bytecode); return (Traversal) this; } public Traversal constant(final R constant) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.CONSTANT, constant); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.MAP, constant); return (Traversal) this; } @@ -168,7 +168,7 @@ public class Traversal implements Iterator { } public Traversal identity() { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.IDENTITY); +this.bytecode.addInstruction(this.currentCoefficient, Symbols.FILTER, Boolean.TRUE); return this; } @@ -243,12 +243,12 @@ public class Traversal implements Iterator { // TODO: for some reason var args are not working...Java11 public Traversal union(final Traversal traversalA, final Traversal traversalB) { -this.bytecode.addInstruction(this.currentCoefficient, Symbols.UNION, traversalA.bytecode, traversalB.bytecode); +