You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2015/08/25 14:53:57 UTC

[1/6] incubator-tinkerpop git commit: Revert "Merge remote-tracking branch 'origin' into tp30"

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/tp30 e21f283e0 -> 6902e68a0


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
index e4ba1bb..550c7d2 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatTest.java
@@ -22,9 +22,10 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.MapHelper;
-import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -69,10 +70,6 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Map<String, Long>> get_g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX();
 
-    //
-
-    public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX();
-
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_repeatXoutX_timesX2X_emit_path() {
@@ -215,22 +212,6 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
         });
     }
 
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX() {
-        final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX();
-        printTraversalForm(traversal);
-        int counter = 0;
-        while (traversal.hasNext()) {
-            final Map<String, Vertex> map = traversal.next();
-            assertEquals(2, map.size());
-            assertTrue(map.get("a") instanceof Vertex);
-            assertTrue(map.get("b") instanceof Vertex);
-            counter++;
-        }
-        assertTrue(counter > 0);
-    }
-
     public static class Traversals extends RepeatTest {
 
         @Override
@@ -277,10 +258,5 @@ public abstract class RepeatTest extends AbstractGremlinProcessTest {
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX() {
             return g.V().repeat(groupCount("m").by("name").out()).times(2).cap("m");
         }
-
-        @Override
-        public Traversal<Vertex, Map<String, Vertex>> get_g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX() {
-            return g.V().repeat(both()).times(10).as("a").out().as("b").select("a", "b");
-        }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountTest.java
index 320847c..3e3424a 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/CountTest.java
@@ -21,7 +21,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
-import org.apache.tinkerpop.gremlin.process.IgnoreEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
@@ -51,8 +50,6 @@ public abstract class CountTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX8X_count();
 
-    public abstract Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count();
-
     public abstract Traversal<Vertex, Long> get_g_V_hasXnoX_count();
 
     public abstract Traversal<Vertex, Long> get_g_V_fold_countXlocalX();
@@ -103,15 +100,6 @@ public abstract class CountTest extends AbstractGremlinProcessTest {
     }
 
     @Test
-    @LoadGraphWith(GRATEFUL)
-    public void g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count() {
-        final Traversal<Vertex, Long> traversal = get_g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count();
-        printTraversalForm(traversal);
-        assertEquals(new Long(24309134024L), traversal.next());
-        assertFalse(traversal.hasNext());
-    }
-
-    @Test
     @LoadGraphWith(MODERN)
     public void g_V_hasXnoX_count() {
         final Traversal<Vertex, Long> traversal = get_g_V_hasXnoX_count();
@@ -166,11 +154,6 @@ public abstract class CountTest extends AbstractGremlinProcessTest {
         }
 
         @Override
-        public  Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count() {
-            return g.V().repeat(out()).times(5).as("a").out("writtenBy").as("b").select("a", "b").count();
-        }
-
-        @Override
         public Traversal<Vertex, Long> get_g_V_hasXnoX_count() {
             return g.V().has("no").count();
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsTest.java
deleted file mode 100644
index 298260d..0000000
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsTest.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.LoadGraphWith;
-import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
-import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
-import org.apache.tinkerpop.gremlin.process.traversal.Path;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.Arrays;
-
-import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.junit.Assert.*;
-
-/**
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-@RunWith(GremlinProcessRunner.class)
-public abstract class LoopsTest extends AbstractGremlinProcessTest {
-
-    /*
-    g.V(1).repeat(both().simplePath()).until(has('name', 'peter').or().loops().is(3)).has('name', 'peter').path().by('name').
-                forEachRemaining(System.out::println);
-        System.out.println('--');
-        g.V(v1Id).repeat(both().simplePath()).until(has('name', 'peter').or().loops().is(2)).has('name', 'peter').path().by('name').
-                forEachRemaining(System.out::println);
-        System.out.println('--');
-        g.V(v1Id).repeat(both().simplePath()).until(has('name', 'peter').and().loops().is(3)).has('name', 'peter').path().by('name').
-                forEachRemaining(System.out::println);
-        System.out.println('--');
-        g.V().emit(has('name', 'marko').or().loops().is(2)).repeat(out()).values('name').
-                forEachRemaining(System.out::println);
-     */
-    public abstract Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX3XX_hasXname_peterX_path_byXnameX(final Object v1Id);
-
-    public abstract Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX(final Object v1Id);
-
-    public abstract Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX(final Object v1Id);
-
-    public abstract Traversal<Vertex, String> get_g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX();
-
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX3XX_hasXname_peterX_path_byXnameX() {
-        final Traversal<Vertex, Path> traversal = get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX3XX_hasXname_peterX_path_byXnameX(convertToVertexId("marko"));
-        printTraversalForm(traversal);
-        int paths = 0;
-        boolean has3 = false, has4 = false;
-        while (traversal.hasNext()) {
-            final Path path = traversal.next();
-            switch (path.size()) {
-                case 3:
-                    assertEquals("marko", path.get(0));
-                    assertEquals("lop", path.get(1));
-                    assertEquals("peter", path.get(2));
-                    has3 = true;
-                    break;
-                case 4:
-                    assertEquals("marko", path.get(0));
-                    assertEquals("josh", path.get(1));
-                    assertEquals("lop", path.get(2));
-                    assertEquals("peter", path.get(3));
-                    has4 = true;
-                    break;
-            }
-            paths++;
-        }
-        assertTrue(has3 && has4);
-        assertEquals(2, paths);
-    }
-
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX() {
-        final Traversal<Vertex, Path> traversal = get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX(convertToVertexId("marko"));
-        printTraversalForm(traversal);
-        assertTrue(traversal.hasNext());
-        final Path path = traversal.next();
-        assertEquals(3, path.size());
-        assertEquals("marko", path.get(0));
-        assertEquals("lop", path.get(1));
-        assertEquals("peter", path.get(2));
-        assertFalse(traversal.hasNext());
-    }
-
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX() {
-        final Traversal<Vertex, Path> traversal = get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX(convertToVertexId("marko"));
-        printTraversalForm(traversal);
-        assertTrue(traversal.hasNext());
-        final Path path = traversal.next();
-        assertEquals(4, path.size());
-        assertEquals("marko", path.get(0));
-        assertEquals("josh", path.get(1));
-        assertEquals("lop", path.get(2));
-        assertEquals("peter", path.get(3));
-        assertFalse(traversal.hasNext());
-    }
-
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX() {
-        final Traversal<Vertex, String> traversal = get_g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX();
-        printTraversalForm(traversal);
-        checkResults(Arrays.asList("marko", "ripple", "lop"), traversal);
-    }
-
-    public static class Traversals extends LoopsTest {
-
-        @Override
-        public Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX3XX_hasXname_peterX_path_byXnameX(final Object v1Id) {
-            return g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").or().loops().is(3)).has("name", "peter").path().by("name");
-        }
-
-        @Override
-        public Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX(final Object v1Id) {
-            return g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").or().loops().is(2)).has("name", "peter").path().by("name");
-        }
-
-        @Override
-        public Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX(final Object v1Id) {
-            return g.V(v1Id).repeat(__.both().simplePath()).until(__.has("name", "peter").and().loops().is(3)).has("name", "peter").path().by("name");
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX() {
-            return g.V().emit(__.has("name", "marko").or().loops().is(2)).repeat(__.out()).values("name");
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapKeysTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapKeysTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapKeysTest.java
index 4578e0f..8db172f 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapKeysTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapKeysTest.java
@@ -27,7 +27,6 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import java.util.Arrays;
-import java.util.List;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 
@@ -39,18 +38,12 @@ public abstract class MapKeysTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Double> get_g_V_outE_valuesXweightX_groupCount_mapKeys();
 
-    public abstract Traversal<Vertex, Double> get_g_V_outE_valuesXweightX_groupCount_unfold_mapKeys();
-
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_outE_valuesXweightX_groupCount_mapKeys() {
-        final List<Traversal<Vertex, Double>> traversals = Arrays.asList(
-                get_g_V_outE_valuesXweightX_groupCount_mapKeys(),
-                get_g_V_outE_valuesXweightX_groupCount_unfold_mapKeys());
-        for (final Traversal<Vertex, Double> traversal : traversals) {
-            printTraversalForm(traversal);
-            checkResults(Arrays.asList(0.2, 0.4, 0.5, 1.0), traversal);
-        }
+        final Traversal<Vertex, Double> traversal = get_g_V_outE_valuesXweightX_groupCount_mapKeys();
+        printTraversalForm(traversal);
+        checkResults(Arrays.asList(0.2, 0.4, 0.5, 1.0), traversal);
     }
 
     public static class Traversals extends MapKeysTest {
@@ -59,10 +52,5 @@ public abstract class MapKeysTest extends AbstractGremlinProcessTest {
         public Traversal<Vertex, Double> get_g_V_outE_valuesXweightX_groupCount_mapKeys() {
             return g.V().outE().values("weight").groupCount().mapKeys();
         }
-
-        @Override
-        public Traversal<Vertex, Double> get_g_V_outE_valuesXweightX_groupCount_unfold_mapKeys() {
-            return g.V().outE().values("weight").groupCount().unfold().mapKeys();
-        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesTest.java
index 45edab1..4e454ba 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesTest.java
@@ -27,7 +27,6 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 
 import java.util.Arrays;
-import java.util.List;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 
@@ -39,20 +38,14 @@ public abstract class MapValuesTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Long> get_g_V_outE_valuesXweightX_groupCount_mapValues();
 
-    public abstract Traversal<Vertex, Long> get_g_V_outE_valuesXweightX_groupCount_unfold_mapValues();
-
     public abstract Traversal<Vertex, Long> get_g_V_outE_valuesXweightX_groupCount_mapValues_groupCount_mapValues();
 
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_outE_valuesXweightX_groupCount_mapValues() {
-        final List<Traversal<Vertex, Long>> traversals = Arrays.asList(
-                get_g_V_outE_valuesXweightX_groupCount_mapValues(),
-                get_g_V_outE_valuesXweightX_groupCount_unfold_mapValues());
-        for (final Traversal<Vertex, Long> traversal : traversals) {
-            printTraversalForm(traversal);
-            checkResults(Arrays.asList(1l, 1l, 2l, 2l), traversal);
-        }
+        final Traversal<Vertex, Long> traversal = get_g_V_outE_valuesXweightX_groupCount_mapValues();
+        printTraversalForm(traversal);
+        checkResults(Arrays.asList(1l, 1l, 2l, 2l), traversal);
     }
 
     @Test
@@ -71,11 +64,6 @@ public abstract class MapValuesTest extends AbstractGremlinProcessTest {
         }
 
         @Override
-        public Traversal<Vertex, Long> get_g_V_outE_valuesXweightX_groupCount_unfold_mapValues() {
-            return g.V().outE().values("weight").groupCount().unfold().mapValues();
-        }
-
-        @Override
         public Traversal<Vertex, Long> get_g_V_outE_valuesXweightX_groupCount_mapValues_groupCount_mapValues() {
             return g.V().outE().values("weight").groupCount().mapValues().groupCount().mapValues();
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
index ff657ef..4f8d582 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchTest.java
@@ -53,8 +53,6 @@ import static org.junit.Assert.*;
 @RunWith(GremlinProcessRunner.class)
 public abstract class MatchTest extends AbstractGremlinProcessTest {
 
-    public abstract Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_matchXa_selectXnameX_bX();
-
     // very basic query
     public abstract Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_out_bX();
 
@@ -136,22 +134,6 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     @Test
     @LoadGraphWith(MODERN)
-    public void g_V_valueMap_matchXa_selectXnameX_bX() {
-        final Traversal<Vertex, Map<String, Object>> traversal = get_g_V_valueMap_matchXa_selectXnameX_bX();
-        printTraversalForm(traversal);
-        int counter = 0;
-        while (traversal.hasNext()) {
-            counter++;
-            final Map<String, Object> map = traversal.next();
-            assertTrue(Map.class.isAssignableFrom(map.get("a").getClass()));
-            final String name = ((Map<String,List<String>>) map.get("a")).get("name").get(0);
-            assertEquals(name, ((List<String>) map.get("b")).get(0));
-        }
-        assertEquals(6, counter);
-    }
-
-    @Test
-    @LoadGraphWith(MODERN)
     public void g_V_matchXa_out_bX() throws Exception {
         final Traversal<Vertex, Map<String, Vertex>> traversal = get_g_V_matchXa_out_bX();
         printTraversalForm(traversal);
@@ -487,11 +469,6 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
 
     public abstract static class Traversals extends MatchTest {
         @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_matchXa_selectXnameX_bX() {
-            return g.V().valueMap().match(as("a").select("name").as("b"));
-        }
-
-        @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_out_bX() {
             return g.V().match(as("a").out().as("b"));
         }
@@ -544,7 +521,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
             return g.V().match(
                     as("a").out("created").has("name", "lop").as("b"),
                     as("b").in("created").has("age", 29).as("c"))
-                    .where(__.<Vertex>as("c").repeat(out()).times(2)).select("a", "b", "c");
+                    .where(__.<Vertex>as("c").repeat(out()).times(2)).select("a","b","c");
         }
 
         @Override
@@ -574,7 +551,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
                     as("b").out("created").has("name", "lop"),
                     as("b").match(
                             as("b").out("created").as("d"),
-                            as("d").in("created").as("c")).select("c").as("c")).<Vertex>select("a", "b", "c");
+                            as("d").in("created").as("c")).select("c").as("c")).<Vertex>select("a","b","c");
         }
 
         @Override
@@ -629,7 +606,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
         public Traversal<Vertex, Map<String, String>> get_g_V_matchXa_created_b__c_created_bX_selectXa_b_cX_byXnameX() {
             return g.V().match(
                     as("a").out("created").as("b"),
-                    as("c").out("created").as("b")).<String>select("a", "b", "c").by("name");
+                    as("c").out("created").as("b")).<String>select("a","b","c").by("name");
         }
 
         @Override
@@ -650,7 +627,7 @@ public abstract class MatchTest extends AbstractGremlinProcessTest {
                     ),
                     as("b").in("created").as("c"),
                     as("b").in("created").count().is(P.gt(1)))
-                    .select("a", "b", "c").by(T.id);
+                    .select("a","b","c").by(T.id);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/UnfoldTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/UnfoldTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/UnfoldTest.java
index 88eda53..537b27d 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/UnfoldTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/UnfoldTest.java
@@ -22,15 +22,19 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import java.util.*;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
-import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.*;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.outE;
 import static org.junit.Assert.*;
 
 /**
@@ -43,8 +47,6 @@ public abstract class UnfoldTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, String> get_g_V_valueMap_unfold_mapXkeyX();
 
-    public abstract Traversal<Vertex, String> get_g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold(final Object v1Id, final Object v6Id);
-
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_localXoutE_foldX_unfold() {
@@ -90,15 +92,6 @@ public abstract class UnfoldTest extends AbstractGremlinProcessTest {
         assertFalse(traversal.hasNext());
     }
 
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold() {
-        final Traversal<Vertex, String> traversal = get_g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold(
-                convertToVertexId("marko"), convertToVertexId("peter"));
-        printTraversalForm(traversal);
-        checkResults(Arrays.asList("marko", "lop", "peter", "marko", "josh", "lop", "peter"), traversal);
-    }
-
     public static class Traversals extends UnfoldTest {
 
         @Override
@@ -110,10 +103,5 @@ public abstract class UnfoldTest extends AbstractGremlinProcessTest {
         public Traversal<Vertex, String> get_g_V_valueMap_unfold_mapXkeyX() {
             return g.V().valueMap().<Map.Entry<String, List>>unfold().map(m -> m.get().getKey());
         }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold(Object v1Id, Object v6Id) {
-            return g.V(v1Id).repeat(both().simplePath()).until(hasId(v6Id)).path().by("name").unfold();
-        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
index 73bb8b8..f23c2c7 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexTest.java
@@ -21,15 +21,14 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
-import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -47,10 +46,6 @@ import static org.junit.Assert.*;
 @RunWith(GremlinProcessRunner.class)
 public abstract class VertexTest extends AbstractGremlinProcessTest {
 
-    public abstract Traversal<Vertex, String> get_g_VXlistXv1_v2_v3XX_name();
-
-    public abstract Traversal<Vertex, String> get_g_VXlistX1_2_3XX_name();
-
     public abstract Traversal<Vertex, Vertex> get_g_V();
 
     public abstract Traversal<Vertex, Vertex> get_g_VX1X_out(final Object v1Id);
@@ -103,17 +98,6 @@ public abstract class VertexTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Vertex> get_g_VX1X_to_XOUT_knowsX(final Object v1Id);
 
-    // GRAPH VERTEX/EDGE
-
-    @Test
-    @LoadGraphWith(MODERN)
-    public void g_VXlistX1_2_3XX_name() {
-        Arrays.asList(get_g_VXlistX1_2_3XX_name(), get_g_VXlistXv1_v2_v3XX_name()).forEach(traversal -> {
-            printTraversalForm(traversal);
-            checkResults(Arrays.asList("marko", "vadas", "lop"), traversal);
-        });
-    }
-
     // VERTEX ADJACENCY
 
     @Test
@@ -533,17 +517,6 @@ public abstract class VertexTest extends AbstractGremlinProcessTest {
     }
 
     public static class Traversals extends VertexTest {
-
-        @Override
-        public Traversal<Vertex, String> get_g_VXlistXv1_v2_v3XX_name() {
-            return g.V(Arrays.asList(convertToVertex(graph, "marko"), convertToVertex(graph, "vadas"), convertToVertex(graph, "lop"))).values("name");
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VXlistX1_2_3XX_name() {
-            return g.V(Arrays.asList(convertToVertexId(graph, "marko"), convertToVertexId(graph, "vadas"), convertToVertexId(graph, "lop"))).values("name");
-        }
-
         @Override
         public Traversal<Vertex, Vertex> get_g_V() {
             return g.V();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileTest.java
index 390678e..0a76d4e 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/ProfileTest.java
@@ -57,7 +57,7 @@ import static org.junit.Assert.*;
 public abstract class ProfileTest extends AbstractGremlinProcessTest {
     public abstract Traversal<Vertex, Vertex> get_g_V_out_out_profile();
 
-    public abstract Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_profile();
+    public abstract Traversal<Vertex, Vertex> get_g_V_repeat_both_profile();
 
     public abstract Traversal<Vertex, Vertex> get_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile();
 
@@ -189,7 +189,7 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(MODERN)
     @IgnoreEngine(TraversalEngine.Type.COMPUTER)
     public void g_V_repeat_both_modern_profile() {
-        final Traversal<Vertex, Vertex> traversal = get_g_V_repeatXbothX_timesX3X_profile();
+        final Traversal<Vertex, Vertex> traversal = get_g_V_repeat_both_profile();
         printTraversalForm(traversal);
 
         traversal.iterate();
@@ -319,7 +319,7 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
         }
 
         @Override
-        public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_profile() {
+        public Traversal<Vertex, Vertex> get_g_V_repeat_both_profile() {
             return g.V().repeat(both()).times(3).profile();
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java
index 2395d9a..5736be8 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/TransactionTest.java
@@ -357,11 +357,10 @@ public class TransactionTest extends AbstractGremlinTest {
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_TRANSACTIONS)
     @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_PERSISTENCE)
-    public void shouldCommitOnCloseWhenConfigured() throws Exception {
+    public void shouldCommitOnCloseByDefault() throws Exception {
         final AtomicReference<Object> oid = new AtomicReference<>();
         final Thread t = new Thread(() -> {
             final Vertex v1 = graph.addVertex("name", "marko");
-            g.tx().onClose(Transaction.CLOSE_BEHAVIOR.COMMIT);
             oid.set(v1.id());
             graph.tx().close();
         });
@@ -376,17 +375,17 @@ public class TransactionTest extends AbstractGremlinTest {
     @FeatureRequirementSet(FeatureRequirementSet.Package.VERTICES_ONLY)
     @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_TRANSACTIONS)
     @FeatureRequirement(featureClass = Graph.Features.GraphFeatures.class, feature = Graph.Features.GraphFeatures.FEATURE_PERSISTENCE)
-    public void shouldRollbackOnCloseByDefault() throws Exception {
+    public void shouldRollbackOnCloseWhenConfigured() throws Exception {
         final AtomicReference<Object> oid = new AtomicReference<>();
         final AtomicReference<Vertex> vid = new AtomicReference<>();
         final Thread t = new Thread(() -> {
             vid.set(graph.addVertex("name", "stephen"));
             graph.tx().commit();
 
-            try (Transaction ignored = graph.tx()) {
-                final Vertex v1 = graph.addVertex("name", "marko");
-                oid.set(v1.id());
-            }
+            final Vertex v1 = graph.addVertex("name", "marko");
+            oid.set(v1.id());
+            g.tx().onClose(Transaction.CLOSE_BEHAVIOR.ROLLBACK);
+            graph.tx().close();
         });
         t.start();
         t.join();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
index cdef5b8..ec27504 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
@@ -79,7 +79,6 @@ import static org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexFeatur
 import static org.apache.tinkerpop.gremlin.structure.Graph.Features.VertexPropertyFeatures.*;
 import static org.apache.tinkerpop.gremlin.structure.io.IoCore.graphson;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
@@ -124,7 +123,7 @@ public class IoTest {
         @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_LONG_VALUES)
         @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_DOUBLE_VALUES)
         @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-        public void shouldReadGraphMLWithAllSupportedDataTypes() throws IOException {
+        public void shouldReadGraphMLAnAllSupportedDataTypes() throws IOException {
             final GraphReader reader = GraphMLReader.build().create();
             try (final InputStream stream = IoTest.class.getResourceAsStream(TestHelper.convertPackageToResourcePath(GraphMLResourceAccess.class) + "graph-types.xml")) {
                 reader.readGraph(stream, graph);
@@ -140,49 +139,6 @@ public class IoTest {
             assertEquals("junk", v.<String>value("n"));
         }
 
-        @Test
-        @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-        @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_FLOAT_VALUES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_BOOLEAN_VALUES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_LONG_VALUES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_DOUBLE_VALUES)
-        @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-        public void shouldReadGraphMLWithoutStrictOption() throws IOException {
-            final GraphReader reader = GraphMLReader.build().strict(false).create();
-            try (final InputStream stream = IoTest.class.getResourceAsStream(TestHelper.convertPackageToResourcePath(GraphMLResourceAccess.class) + "graph-types-bad.xml")) {
-                reader.readGraph(stream, graph);
-            }
-
-            final Vertex v = graph.vertices().next();
-            assertFalse(v.values("d").hasNext());
-            assertEquals("some-string", v.<String>value("s"));
-            assertFalse(v.values("i").hasNext());
-            assertEquals(false, v.<Boolean>value("b"));
-            assertFalse(v.values("f").hasNext());
-            assertFalse(v.values("l").hasNext());
-            assertEquals("junk", v.<String>value("n"));
-        }
-
-        @Test(expected = NumberFormatException.class)
-        @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
-        @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_FLOAT_VALUES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_BOOLEAN_VALUES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_LONG_VALUES)
-        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_DOUBLE_VALUES)
-        @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
-        public void shouldReadGraphMLWithStrictOption() throws IOException {
-            final GraphReader reader = GraphMLReader.build().strict(true).create();
-            try (final InputStream stream = IoTest.class.getResourceAsStream(TestHelper.convertPackageToResourcePath(GraphMLResourceAccess.class) + "graph-types-bad.xml")) {
-                reader.readGraph(stream, graph);
-            }
-        }
-
         /**
          * Only need to execute this test with TinkerGraph or other graphs that support user supplied identifiers.
          */

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphml/graph-types-bad.xml
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphml/graph-types-bad.xml b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphml/graph-types-bad.xml
deleted file mode 100644
index ee4700b..0000000
--- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/structure/io/graphml/graph-types-bad.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
-        http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
-    <key id="id-d" for="node" attr.name="d" attr.type="double"/>
-    <key id="id-s" for="node" attr.name="s" attr.type="string"/>
-    <key id="id-i" for="node" attr.name="i" attr.type="int"/>
-    <key id="id-b" for="node" attr.name="b" attr.type="boolean"/>
-    <key id="id-l" for="node" attr.name="l" attr.type="long"/>
-    <key id="id-f" for="node" attr.name="f" attr.type="float"/>
-    <key id="id-n" for="node" attr.name="n" attr.type="nothing-supported-and-goes-to-string"/>
-    <key id="labelV" for="node" attr.name="labelV" attr.type="string"/>
-    <key id="labelE" for="edge" attr.name="labelE" attr.type="string"/>
-    <graph id="G" edgedefault="directed">
-        <node id="1">
-            <data key="id-d"></data>
-            <data key="id-s">some-string</data>
-            <data key="id-i">not-parseable</data>
-            <data key="id-b">blah</data>
-            <data key="id-l"></data>
-            <data key="id-f"></data>
-            <data key="id-n">junk</data>
-            <data key="label">default</data>
-        </node>
-    </graph>
-</graphml>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/hadoop-gremlin/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/pom.xml b/hadoop-gremlin/pom.xml
index df55f99..ff094c4 100644
--- a/hadoop-gremlin/pom.xml
+++ b/hadoop-gremlin/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.0-SNAPSHOT</version>
+        <version>3.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>hadoop-gremlin</artifactId>
     <name>Apache TinkerPop :: Hadoop Gremlin</name>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
index 18d515e..ee258d0 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopGraph.java
@@ -119,10 +119,6 @@ import java.util.stream.Stream;
         method = "g_V_repeatXoutX_timesX8X_count",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest$Traversals",
-        method = "g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
-@Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals",
         method = "g_V_both_both_count",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
@@ -135,10 +131,6 @@ import java.util.stream.Stream;
         method = "g_V_repeatXoutX_timesX8X_count",
         reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.GroovyCountTest$Traversals",
-        method = "g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count",
-        reason = "Hadoop-Gremlin is OLAP-oriented and for OLTP operations, linear-scan joins are required. This particular tests takes many minutes to execute.")
-@Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.computer.GraphComputerTest",
         method = "shouldNotAllowNullMemoryKeys",
         reason = "Giraph does a hard kill on failure and stops threads which stops test cases. Exception handling semantics are correct though.",

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/neo4j-gremlin/pom.xml
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/pom.xml b/neo4j-gremlin/pom.xml
index 8661064..c6349b4 100644
--- a/neo4j-gremlin/pom.xml
+++ b/neo4j-gremlin/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.0-SNAPSHOT</version>
+        <version>3.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>neo4j-gremlin</artifactId>
     <name>Apache TinkerPop :: Neo4j Gremlin</name>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
index 8b613e4..b2bfbb6 100644
--- a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
+++ b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/process/traversal/step/sideEffect/Neo4jGraphStep.java
@@ -47,7 +47,7 @@ public final class Neo4jGraphStep<S extends Element> extends GraphStep<S> implem
         super(originalGraphStep.getTraversal(), originalGraphStep.getReturnClass(), originalGraphStep.getIds());
         originalGraphStep.getLabels().forEach(this::addLabel);
         //No need to do anything if the first element is an Element, all elements are guaranteed to be an element and will be return as is
-        if (this.ids.length == 0 || !(this.ids[0] instanceof Element))
+        if ((this.ids.length == 0 || !(this.ids[0] instanceof Element)))
             this.setIteratorSupplier(() -> (Iterator<S>) (Vertex.class.isAssignableFrom(this.returnClass) ? this.vertices() : this.edges()));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/Neo4jGraph.java
----------------------------------------------------------------------
diff --git a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/Neo4jGraph.java b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/Neo4jGraph.java
index 2ea254c..17b9976 100644
--- a/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/Neo4jGraph.java
+++ b/neo4j-gremlin/src/main/java/org/apache/tinkerpop/gremlin/neo4j/structure/Neo4jGraph.java
@@ -36,7 +36,7 @@ import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Transaction;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.util.AbstractThreadLocalTransaction;
+import org.apache.tinkerpop.gremlin.structure.util.AbstractTransaction;
 import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.structure.util.wrapped.WrappedGraph;
@@ -316,7 +316,7 @@ public final class Neo4jGraph implements Graph, WrappedGraph<Neo4jGraphAPI> {
         return traversal;
     }
 
-    class Neo4jTransaction extends AbstractThreadLocalTransaction {
+    class Neo4jTransaction extends AbstractTransaction {
 
         protected final ThreadLocal<Neo4jTx> threadLocalTx = ThreadLocal.withInitial(() -> null);
 
@@ -344,6 +344,10 @@ public final class Neo4jGraph implements Graph, WrappedGraph<Neo4jGraphAPI> {
         @Override
         public void doRollback() throws TransactionException {
             try {
+//                javax.transaction.Transaction t = transactionManager.getTransaction();
+//                if (null == t || t.getStatus() == javax.transaction.Status.STATUS_ROLLEDBACK)
+//                    return;
+
                 threadLocalTx.get().failure();
             } catch (Exception e) {
                 throw new TransactionException(e);

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 769f84f..a9b34e5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@ limitations under the License.
     </parent>
     <groupId>org.apache.tinkerpop</groupId>
     <artifactId>tinkerpop</artifactId>
-    <version>3.1.0-SNAPSHOT</version>
+    <version>3.0.1-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>Apache TinkerPop</name>
     <description>A Graph Computing Framework</description>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/tinkergraph-gremlin/pom.xml
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/pom.xml b/tinkergraph-gremlin/pom.xml
index 8676a9d..4f271bc 100644
--- a/tinkergraph-gremlin/pom.xml
+++ b/tinkergraph-gremlin/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.0-SNAPSHOT</version>
+        <version>3.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>tinkergraph-gremlin</artifactId>
     <name>Apache TinkerPop :: TinkerGraph Gremlin</name>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
index 5e154ab..56bac20 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
@@ -49,7 +49,7 @@ public final class TinkerGraphStep<S extends Element> extends GraphStep<S> imple
         super(originalGraphStep.getTraversal(), originalGraphStep.getReturnClass(), originalGraphStep.getIds());
         originalGraphStep.getLabels().forEach(this::addLabel);
         //No need to do anything if the first element is an Element, all elements are guaranteed to be an element and will be return as is
-        if (this.ids.length == 0 || !(this.ids[0] instanceof Element))
+        if ((this.ids.length == 0 || !(this.ids[0] instanceof Element)))
             this.setIteratorSupplier(() -> (Iterator<S>) (Vertex.class.isAssignableFrom(this.returnClass) ? this.vertices() : this.edges()));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
index 9e0c8ab..37bafb5 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
@@ -28,7 +28,6 @@ import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Transaction;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.apache.tinkerpop.gremlin.structure.io.Io;
 import org.apache.tinkerpop.gremlin.structure.util.ElementHelper;
 import org.apache.tinkerpop.gremlin.structure.util.GraphFactory;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
@@ -180,11 +179,6 @@ public final class TinkerGraph implements Graph {
     }
 
     @Override
-    public <I extends Io> I io(final Io.Builder<I> builder) {
-        return (I) builder.graph(this).registry(TinkerIoRegistry.getInstance()).create();
-    }
-
-    @Override
     public String toString() {
         return StringFactory.graphString(this, "vertices:" + this.vertices.size() + " edges:" + this.edges.size());
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistry.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistry.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistry.java
deleted file mode 100644
index f38564d..0000000
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerIoRegistry.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.tinkergraph.structure;
-
-import org.apache.tinkerpop.gremlin.structure.io.AbstractIoRegistry;
-import org.apache.tinkerpop.gremlin.structure.io.IoCore;
-import org.apache.tinkerpop.gremlin.structure.io.IoRegistry;
-import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
-import org.apache.tinkerpop.shaded.kryo.Kryo;
-import org.apache.tinkerpop.shaded.kryo.Serializer;
-import org.apache.tinkerpop.shaded.kryo.io.Input;
-import org.apache.tinkerpop.shaded.kryo.io.Output;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-
-/**
- * An implementation of the {@link IoRegistry} interface that provides serializers with custom configurations for
- * implementation specific classes that might need to be serialized.  This registry allows a {@link TinkerGraph} to
- * be serialized directly which is useful for moving small graphs around on the network.
- * <p/>
- * Most vendors need not implement this kind of custom serializer as they will deal with much larger graphs that
- * wouldn't be practical to serialize in this fashion.  This is a bit of a special case for TinkerGraph given its
- * in-memory status.  Typical implementations would create serializers for a complex vertex identifier or a
- * custom data class like a "geographic point".
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public final class TinkerIoRegistry extends AbstractIoRegistry {
-
-    private static final TinkerIoRegistry INSTANCE = new TinkerIoRegistry();
-
-    private TinkerIoRegistry() {
-        register(GryoIo.class, TinkerGraph.class, new TinkerGraphSerializer());
-    }
-
-    public static TinkerIoRegistry getInstance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Provides a method to serialize an entire {@link TinkerGraph} into itself.  This is useful when shipping small
-     * graphs around through Gremlin Server.
-     */
-    final static class TinkerGraphSerializer extends Serializer<TinkerGraph> {
-        @Override
-        public void write(final Kryo kryo, final Output output, final TinkerGraph graph) {
-            try (final ByteArrayOutputStream stream = new ByteArrayOutputStream()) {
-                graph.io(IoCore.gryo()).writer().create().writeGraph(stream, graph);
-                final byte[] bytes = stream.toByteArray();
-                output.writeInt(bytes.length);
-                output.write(bytes);
-            } catch (Exception io) {
-                throw new RuntimeException(io);
-            }
-        }
-
-        @Override
-        public TinkerGraph read(final Kryo kryo, final Input input, final Class<TinkerGraph> tinkerGraphClass) {
-            final TinkerGraph graph = TinkerGraph.open();
-            final int len = input.readInt();
-            final byte[] bytes = input.readBytes(len);
-            try (final ByteArrayInputStream stream = new ByteArrayInputStream(bytes)) {
-                graph.io(IoCore.gryo()).reader().create().readGraph(stream, graph);
-            } catch (Exception io) {
-                throw new RuntimeException(io);
-            }
-
-            return graph;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
index 0b33280..6b23710 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphTest.java
@@ -30,15 +30,11 @@ import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.tinkerpop.gremlin.structure.io.IoCore;
-import org.apache.tinkerpop.gremlin.structure.io.IoTest;
 import org.apache.tinkerpop.gremlin.structure.io.graphml.GraphMLIo;
 import org.apache.tinkerpop.gremlin.util.TimeUtil;
 import org.junit.Ignore;
 import org.junit.Test;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -156,10 +152,18 @@ public class TinkerGraphTest {
     public void testPlayDK() throws Exception {
         final Graph graph = TinkerFactory.createModern();
         final GraphTraversalSource g = graph.traversal();
-        Traversal traversal = g.V().dedup().filter(__.out()).has("age", P.gt(0));
+        Traversal traversal = g.V().where(out().and().in()).profile().cap(TraversalMetrics.METRICS_KEY);
+        //traversal.forEachRemaining(System.out::println);
         System.out.println(traversal.toString());
-        //traversal.asAdmin().applyStrategies();
-        System.out.println(traversal.iterate().toString());
+        traversal.asAdmin().applyStrategies();
+        System.out.println(traversal.toString());
+        traversal.forEachRemaining(System.out::println);
+        traversal = g.V().where(and(out(), in())).profile().cap(TraversalMetrics.METRICS_KEY);
+        //traversal.forEachRemaining(System.out::println);
+        System.out.println(traversal.toString());
+        traversal.asAdmin().applyStrategies();
+        System.out.println(traversal.toString());
+        //System.out.println(traversal.toString());
     }
 
     @Test
@@ -187,17 +191,25 @@ public class TinkerGraphTest {
     @Test
     @Ignore
     public void testPlay5() throws Exception {
+
         TinkerGraph graph = TinkerGraph.open();
         graph.createIndex("name",Vertex.class);
         graph.io(GraphMLIo.build()).readGraph("/Users/marko/software/tinkerpop/tinkerpop3/data/grateful-dead.xml");
-        GraphTraversalSource g = graph.traversal(GraphTraversalSource.computer());
+        GraphTraversalSource g = graph.traversal(GraphTraversalSource.standard());
 
         final Supplier<Traversal<?,?>> traversal = () ->
-                g.V().repeat(out()).times(5).as("a").out("writtenBy").as("b").select("a","b").count();
+                g.V().match(
+                        as("a").has("name", "Garcia"),
+                        as("a").in("writtenBy").as("b"),
+                        as("b").out("followedBy").as("c"),
+                        as("c").out("writtenBy").as("d"),
+                        as("d").where(P.neq("a"))).select("a","b","c","d").by("name");
+
 
         System.out.println(traversal.get());
         System.out.println(traversal.get().iterate());
-        System.out.println(TimeUtil.clockWithResult(1, () -> traversal.get().next()));
+        traversal.get().forEachRemaining(System.out::println);
+
     }
 
     @Test
@@ -447,15 +459,5 @@ public class TinkerGraphTest {
         }, 0.5)).has("oid", "1").count().next());
     }
 
-    @Test
-    public void shouldSerializeTinkerGraphToGryo() throws Exception {
-        final TinkerGraph graph = TinkerFactory.createModern();
-        try (final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
-            graph.io(IoCore.gryo()).writer().create().writeObject(out, graph);
-            try (final ByteArrayInputStream inputStream = new ByteArrayInputStream(out.toByteArray())) {
-                final TinkerGraph target = graph.io(IoCore.gryo()).reader().create().readObject(inputStream, TinkerGraph.class);
-                IoTest.assertModernGraph(target, true, false);
-            }
-        }
-    }
+
 }


[2/6] incubator-tinkerpop git commit: Revert "Merge remote-tracking branch 'origin' into tp30"

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractTransaction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractTransaction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractTransaction.java
index 56c6f36..4d15a45 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractTransaction.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractTransaction.java
@@ -28,11 +28,13 @@ import java.util.function.Consumer;
 import java.util.function.Function;
 
 /**
- * A simple base class for {@link Transaction} that provides some common functionality and default behavior.
- * While vendors can choose to use this class, it is generally better to extend from
- * {@link AbstractThreadedTransaction} or {@link AbstractThreadLocalTransaction} which include default "listener"
- * functionality.  Implementers should note that this class assumes that threaded transactions are not enabled
- * and should explicitly override {@link #createThreadedTx} to implement that functionality if required.
+ * A simple base class for {@link Transaction} that provides some common functionality and default behavior.  Vendors
+ * can use this class as a starting point for their own implementations. Implementers should note that this
+ * class assumes that threaded transactions are not enabled.  Vendors should explicitly override
+ * {@link #createThreadedTx} to implement that functionality if required.
+ * <p/>
+ * Note that transaction listeners are registered in a {@link ThreadLocal} fashion which matches the pattern
+ * expected of vendor implementations of a {@link Transaction}.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
@@ -42,12 +44,19 @@ public abstract class AbstractTransaction implements Transaction {
 
     private Graph g;
 
+    private ThreadLocal<List<Consumer<Status>>> transactionListeners = new ThreadLocal<List<Consumer<Status>>>() {
+        @Override
+        protected List<Consumer<Status>> initialValue() {
+            return new ArrayList<>();
+        }
+    };
+
     public AbstractTransaction(final Graph g) {
         // auto transaction behavior
         readWriteConsumer = READ_WRITE_BEHAVIOR.AUTO;
 
-        // default is to rollback transactions on close
-        closeConsumer = CLOSE_BEHAVIOR.ROLLBACK;
+        // commit on close
+        closeConsumer = CLOSE_BEHAVIOR.COMMIT;
 
         this.g = g;
     }
@@ -70,23 +79,6 @@ public abstract class AbstractTransaction implements Transaction {
      */
     protected abstract void doRollback() throws TransactionException;
 
-    /**
-     * Called within {@link #commit()} just after the internal call to {@link #doCommit()}. Implementations of this
-     * method should raise {@link Status#COMMIT} events to any listeners added via
-     * {@link #addTransactionListener(Consumer)}.
-     */
-    protected abstract void fireOnCommit();
-
-    /**
-     * Called within {@link #rollback()} just after the internal call to {@link #doRollback()} ()}. Implementations
-     * of this method should raise {@link Status#ROLLBACK} events to any listeners added via
-     * {@link #addTransactionListener(Consumer)}.
-     */
-    protected abstract void fireOnRollback();
-
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public void open() {
         if (isOpen())
@@ -95,52 +87,40 @@ public abstract class AbstractTransaction implements Transaction {
             doOpen();
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public void commit() {
         readWriteConsumer.accept(this);
         try {
             doCommit();
-            fireOnCommit();
         } catch (TransactionException te) {
             throw new RuntimeException(te);
         }
+
+        transactionListeners.get().forEach(c -> c.accept(Status.COMMIT));
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public void rollback() {
         readWriteConsumer.accept(this);
         try {
             doRollback();
-            fireOnRollback();
         } catch (TransactionException te) {
             throw new RuntimeException(te);
         }
+
+        transactionListeners.get().forEach(c -> c.accept(Status.ROLLBACK));
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public <R> Workload<R> submit(final Function<Graph, R> work) {
         return new Workload<>(g, work);
     }
-    /**
-     * {@inheritDoc}
-     */
+
     @Override
     public <G extends Graph> G createThreadedTx() {
         throw Transaction.Exceptions.threadedTransactionsNotSupported();
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public void readWrite() {
         readWriteConsumer.accept(this);
@@ -154,24 +134,33 @@ public abstract class AbstractTransaction implements Transaction {
         closeConsumer.accept(this);
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public synchronized Transaction onReadWrite(final Consumer<Transaction> consumer) {
         readWriteConsumer = Optional.ofNullable(consumer).orElseThrow(Transaction.Exceptions::onReadWriteBehaviorCannotBeNull);
         return this;
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public synchronized Transaction onClose(final Consumer<Transaction> consumer) {
         closeConsumer = Optional.ofNullable(consumer).orElseThrow(Transaction.Exceptions::onCloseBehaviorCannotBeNull);
         return this;
     }
 
+    @Override
+    public void addTransactionListener(final Consumer<Status> listener) {
+        transactionListeners.get().add(listener);
+    }
+
+    @Override
+    public void removeTransactionListener(final Consumer<Status> listener) {
+        transactionListeners.get().remove(listener);
+    }
+
+    @Override
+    public void clearTransactionListeners() {
+        transactionListeners.get().clear();
+    }
+
     /**
      * An "internal" exception thrown by vendors when calls to {@link AbstractTransaction#doCommit} or
      * {@link AbstractTransaction#doRollback} fail.

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java
index 18d160e..e24e024 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/PathTest.java
@@ -31,10 +31,8 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.function.Supplier;
-import java.util.stream.Collectors;
 
 import static org.junit.Assert.*;
 
@@ -59,7 +57,7 @@ public class PathTest {
             assertEquals(Integer.valueOf(1), path.get("a"));
             assertEquals(Integer.valueOf(2), path.get("b"));
             assertEquals(Integer.valueOf(3), path.get("c"));
-            path = path.extend(Collections.singleton("d"));
+            path.addLabel("d");
             assertEquals(3, path.size());
             assertEquals(Integer.valueOf(1), path.get("a"));
             assertEquals(Integer.valueOf(2), path.get("b"));
@@ -105,9 +103,9 @@ public class PathTest {
     public void shouldExcludeUnlabeledLabelsFromPath() {
         PATH_SUPPLIERS.forEach(supplier -> {
             Path path = supplier.get();
-            path = path.extend("marko", Collections.singleton("a"));
-            path = path.extend("stephen", Collections.singleton("b"));
-            path = path.extend("matthias", new LinkedHashSet<>(Arrays.asList("c", "d")));
+            path = path.extend("marko", "a");
+            path = path.extend("stephen", "b");
+            path = path.extend("matthias", "c", "d");
             assertEquals(3, path.size());
             assertEquals(3, path.objects().size());
             assertEquals(3, path.labels().size());
@@ -124,9 +122,9 @@ public class PathTest {
     public void shouldHaveOrderedPathLabels() {
         PATH_SUPPLIERS.forEach(supplier -> {
             Path path = supplier.get();
-            path = path.extend("marko", new LinkedHashSet<>(Arrays.asList("a", "b")));
-            path = path.extend("stephen", new LinkedHashSet<>(Arrays.asList("c", "a")));
-            path = path.extend("matthias", new LinkedHashSet<>(Arrays.asList("a", "b")));
+            path = path.extend("marko", "a", "b");
+            path = path.extend("stephen", "c", "a");
+            path = path.extend("matthias", "a", "b");
             assertEquals(3, path.size());
             assertEquals(3, path.objects().size());
             assertEquals(3, path.labels().size());
@@ -162,9 +160,9 @@ public class PathTest {
     public void shouldSelectSingleCorrectly() {
         PATH_SUPPLIERS.forEach(supplier -> {
             Path path = supplier.get();
-            path = path.extend("marko", new LinkedHashSet<String>(Arrays.asList("a", "b")));
-            path = path.extend("stephen", new LinkedHashSet<>(Arrays.asList("a", "c")));
-            path = path.extend("matthias", new LinkedHashSet<>(Arrays.asList("c", "d")));
+            path = path.extend("marko", "a", "b");
+            path = path.extend("stephen", "a", "c");
+            path = path.extend("matthias", "c", "d");
             assertEquals(3, path.size());
             assertEquals("marko", path.get(Pop.first, "a"));
             assertEquals("marko", path.get(Pop.first, "b"));
@@ -182,9 +180,9 @@ public class PathTest {
     public void shouldSelectListCorrectly() {
         PATH_SUPPLIERS.forEach(supplier -> {
             Path path = supplier.get();
-            path = path.extend("marko", new LinkedHashSet<>(Arrays.asList("a", "b")));
-            path = path.extend("stephen", new LinkedHashSet<>(Arrays.asList("a", "c")));
-            path = path.extend("matthias", new LinkedHashSet<>(Arrays.asList("c", "d")));
+            path = path.extend("marko", "a", "b");
+            path = path.extend("stephen", "a", "c");
+            path = path.extend("matthias", "c", "d");
             assertEquals(3, path.size());
             assertEquals(2, path.<List>get(Pop.all, "a").size());
             assertEquals("marko", path.<List>get(Pop.all, "a").get(0));
@@ -201,61 +199,4 @@ public class PathTest {
         });
     }
 
-    @Test
-    public void shouldHaveEquality() {
-        PATH_SUPPLIERS.forEach(supplier -> {
-            Path pathA1 = supplier.get();
-            Path pathA2 = supplier.get();
-            Path pathB1 = supplier.get();
-            Path pathB2 = supplier.get();
-            assertEquals(pathA1, pathA2);
-            assertEquals(pathA1.hashCode(), pathA2.hashCode());
-            assertEquals(pathA2, pathB1);
-            assertEquals(pathA2.hashCode(), pathB1.hashCode());
-            assertEquals(pathB1, pathB2);
-            assertEquals(pathB1.hashCode(), pathB2.hashCode());
-            ///
-            pathA1 = pathA1.extend("marko", Collections.singleton("a"));
-            pathA2 = pathA2.extend("marko", Collections.singleton("a"));
-            pathB1 = pathB1.extend("marko", Collections.singleton("b"));
-            pathB2 = pathB2.extend("marko", Collections.singleton("b"));
-            assertEquals(pathA1, pathA2);
-            assertEquals(pathA1.hashCode(), pathA2.hashCode());
-            assertNotEquals(pathA2, pathB1);
-            assertEquals(pathB1, pathB2);
-            assertEquals(pathB1.hashCode(), pathB2.hashCode());
-            ///
-            pathA1 = pathA1.extend("daniel", new LinkedHashSet<>(Arrays.asList("aa", "aaa")));
-            pathA2 = pathA2.extend("daniel", new LinkedHashSet<>(Arrays.asList("aa", "aaa")));
-            pathB1 = pathB1.extend("stephen", new LinkedHashSet<>(Arrays.asList("bb", "bbb")));
-            pathB2 = pathB2.extend("stephen", Collections.singleton("bb"));
-            assertEquals(pathA1, pathA2);
-            assertEquals(pathA1.hashCode(), pathA2.hashCode());
-            assertNotEquals(pathA2, pathB1);
-            assertNotEquals(pathB1, pathB2);
-            ///
-            pathA1 = pathA1.extend("matthias", new LinkedHashSet<>(Arrays.asList("aaaa", "aaaaa")));
-            pathA2 = pathA2.extend("bob", new LinkedHashSet<>(Arrays.asList("aaaa", "aaaaa")));
-            pathB1 = pathB1.extend("byn", Collections.singleton("bbbb"));
-            pathB2 = pathB2.extend("bryn", Collections.singleton("bbbb"));
-            assertNotEquals(pathA1, pathA2);
-            assertNotEquals(pathA2, pathB1);
-            assertNotEquals(pathB1, pathB2);
-        });
-    }
-
-    @Test
-    public void shouldHaveCrossTypeEquality() {
-        List<Path> paths = PATH_SUPPLIERS.stream()
-                .map(Supplier::get)
-                .map(path -> path.extend("marko", new LinkedHashSet<>(Arrays.asList("a", "aa"))))
-                .map(path -> path.extend("daniel", Collections.singleton("b")))
-                .collect(Collectors.toList());
-        for (final Path pathA : paths) {
-            for (final Path pathB : paths) {
-                assertEquals(pathA, pathB);
-                assertEquals(pathA.hashCode(), pathB.hashCode());
-            }
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStepTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStepTest.java
index ca7da87..8f8c26e 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WhereStepTest.java
@@ -61,7 +61,7 @@ public class WhereStepTest extends StepTest {
                 {false, __.as("a").local(__.where(P.not(P.within("x")))).asAdmin()},
         };
         for (final Object[] traversalPath : traversalPaths) {
-            assertEquals(traversalPath[0], ((Traversal.Admin<?, ?>) traversalPath[1]).getTraverserRequirements().contains(TraverserRequirement.LABELED_PATH));
+            assertEquals(traversalPath[0], ((Traversal.Admin<?, ?>) traversalPath[1]).getTraverserRequirements().contains(TraverserRequirement.PATH));
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsStepTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsStepTest.java
deleted file mode 100644
index ea11673..0000000
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsStepTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *
- *  * Licensed to the Apache Software Foundation (ASF) under one
- *  * or more contributor license agreements.  See the NOTICE file
- *  * distributed with this work for additional information
- *  * regarding copyright ownership.  The ASF licenses this file
- *  * to you under the Apache License, Version 2.0 (the
- *  * "License"); you may not use this file except in compliance
- *  * with the License.  You may obtain a copy of the License at
- *  *
- *  * http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing,
- *  * software distributed under the License is distributed on an
- *  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  * KIND, either express or implied.  See the License for the
- *  * specific language governing permissions and limitations
- *  * under the License.
- *
- */
-
-package org.apache.tinkerpop.gremlin.process.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.process.traversal.step.StepTest;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public class LoopsStepTest extends StepTest {
-
-    @Override
-    protected List<Traversal> getTraversals() {
-        return Collections.singletonList(__.loops());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStepTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStepTest.java
index 9bdb307..42f8309 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectOneStepTest.java
@@ -61,7 +61,7 @@ public class SelectOneStepTest extends StepTest {
                 {true, __.as("x").local(__.select("x")).asAdmin()},
         };
         for (final Object[] traversalPath : traversalPaths) {
-            assertEquals(traversalPath[0], ((Traversal.Admin<?, ?>) traversalPath[1]).getTraverserRequirements().contains(TraverserRequirement.LABELED_PATH));
+            assertEquals(traversalPath[0], ((Traversal.Admin<?, ?>) traversalPath[1]).getTraverserRequirements().contains(TraverserRequirement.PATH));
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStepTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStepTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStepTest.java
index e9604af..59c3233 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStepTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/SelectStepTest.java
@@ -63,7 +63,7 @@ public class SelectStepTest extends StepTest {
                 {true, __.as("x").out().as("y").local(__.select("x", "y")).asAdmin()},
         };
         for (final Object[] traversalPath : traversalPaths) {
-            assertEquals(traversalPath[0], ((Traversal.Admin<?, ?>) traversalPath[1]).getTraverserRequirements().contains(TraverserRequirement.LABELED_PATH));
+            assertEquals(traversalPath[0], ((Traversal.Admin<?, ?>) traversalPath[1]).getTraverserRequirements().contains(TraverserRequirement.PATH));
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/DedupBijectionStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/DedupBijectionStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/DedupBijectionStrategyTest.java
new file mode 100644
index 0000000..99998f7
--- /dev/null
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/DedupBijectionStrategyTest.java
@@ -0,0 +1,128 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one
+ *  * or more contributor license agreements.  See the NOTICE file
+ *  * distributed with this work for additional information
+ *  * regarding copyright ownership.  The ASF licenses this file
+ *  * to you under the Apache License, Version 2.0 (the
+ *  * "License"); you may not use this file except in compliance
+ *  * with the License.  You may obtain a copy of the License at
+ *  *
+ *  * http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing,
+ *  * software distributed under the License is distributed on an
+ *  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  * KIND, either express or implied.  See the License for the
+ *  * specific language governing permissions and limitations
+ *  * under the License.
+ *
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.runners.Enclosed;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.util.Arrays;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+@RunWith(Enclosed.class)
+public class DedupBijectionStrategyTest {
+
+    @RunWith(Parameterized.class)
+    public static class StandardTest extends AbstractDedupBijectionStrategyTest {
+
+        @Parameterized.Parameters(name = "{0}")
+        public static Iterable<Object[]> data() {
+            return generateTestParameters();
+        }
+
+        @Parameterized.Parameter(value = 0)
+        public Traversal original;
+
+        @Parameterized.Parameter(value = 1)
+        public Traversal optimized;
+
+        @Before
+        public void setup() {
+            this.traversalEngine = mock(TraversalEngine.class);
+            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
+        }
+
+        @Test
+        public void shouldApplyStrategy() {
+            doTest(original, optimized);
+        }
+    }
+
+    @RunWith(Parameterized.class)
+    public static class ComputerTest extends AbstractDedupBijectionStrategyTest {
+
+        @Parameterized.Parameters(name = "{0}")
+        public static Iterable<Object[]> data() {
+            return generateTestParameters();
+        }
+
+        @Parameterized.Parameter(value = 0)
+        public Traversal original;
+
+        @Parameterized.Parameter(value = 1)
+        public Traversal optimized;
+
+        @Before
+        public void setup() {
+            this.traversalEngine = mock(TraversalEngine.class);
+            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
+        }
+
+        @Test
+        public void shouldApplyStrategy() {
+            doTest(original, optimized);
+        }
+    }
+
+    private static abstract class AbstractDedupBijectionStrategyTest {
+
+        protected TraversalEngine traversalEngine;
+
+        void applyDedupBijectionStrategy(final Traversal traversal) {
+            final TraversalStrategies strategies = new DefaultTraversalStrategies();
+            strategies.addStrategies(DedupBijectionStrategy.instance(), IdentityRemovalStrategy.instance());
+
+            traversal.asAdmin().setStrategies(strategies);
+            traversal.asAdmin().setEngine(this.traversalEngine);
+            traversal.asAdmin().applyStrategies();
+        }
+
+        public void doTest(final Traversal traversal, final Traversal optimized) {
+            applyDedupBijectionStrategy(traversal);
+            assertEquals(optimized, traversal);
+        }
+
+        static Iterable<Object[]> generateTestParameters() {
+
+            return Arrays.asList(new Traversal[][]{
+                    {__.dedup().order(), __.dedup().order()},
+                    {__.order().dedup(), __.dedup().order()},
+                    {__.identity().order().dedup(), __.dedup().order()},
+                    {__.order().identity().dedup(), __.dedup().order()},
+                    {__.order().out().dedup(), __.order().out().dedup()}});
+        }
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
deleted file mode 100644
index ca8037d..0000000
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategyTest.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- *
- *  * Licensed to the Apache Software Foundation (ASF) under one
- *  * or more contributor license agreements.  See the NOTICE file
- *  * distributed with this work for additional information
- *  * regarding copyright ownership.  The ASF licenses this file
- *  * to you under the Apache License, Version 2.0 (the
- *  * "License"); you may not use this file except in compliance
- *  * with the License.  You may obtain a copy of the License at
- *  *
- *  * http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing,
- *  * software distributed under the License is distributed on an
- *  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  * KIND, either express or implied.  See the License for the
- *  * specific language governing permissions and limitations
- *  * under the License.
- *
- */
-
-package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
-import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-
-import java.util.Arrays;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-@RunWith(Enclosed.class)
-public class FilterRankingStrategyTest {
-
-    @RunWith(Parameterized.class)
-    public static class StandardTest extends AbstractDedupBijectionStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.STANDARD);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
-    }
-
-    @RunWith(Parameterized.class)
-    public static class ComputerTest extends AbstractDedupBijectionStrategyTest {
-
-        @Parameterized.Parameters(name = "{0}")
-        public static Iterable<Object[]> data() {
-            return generateTestParameters();
-        }
-
-        @Parameterized.Parameter(value = 0)
-        public Traversal original;
-
-        @Parameterized.Parameter(value = 1)
-        public Traversal optimized;
-
-        @Before
-        public void setup() {
-            this.traversalEngine = mock(TraversalEngine.class);
-            when(this.traversalEngine.getType()).thenReturn(TraversalEngine.Type.COMPUTER);
-        }
-
-        @Test
-        public void shouldApplyStrategy() {
-            doTest(original, optimized);
-        }
-    }
-
-    private static abstract class AbstractDedupBijectionStrategyTest {
-
-        protected TraversalEngine traversalEngine;
-
-        void applyDedupBijectionStrategy(final Traversal traversal) {
-            final TraversalStrategies strategies = new DefaultTraversalStrategies();
-            strategies.addStrategies(FilterRankingStrategy.instance(), IdentityRemovalStrategy.instance());
-
-            traversal.asAdmin().setStrategies(strategies);
-            traversal.asAdmin().setEngine(this.traversalEngine);
-            traversal.asAdmin().applyStrategies();
-        }
-
-        public void doTest(final Traversal traversal, final Traversal optimized) {
-            applyDedupBijectionStrategy(traversal);
-            assertEquals(optimized, traversal);
-        }
-
-        static Iterable<Object[]> generateTestParameters() {
-
-            return Arrays.asList(new Traversal[][]{
-                    {__.dedup().order(), __.dedup().order()},
-                    {__.order().dedup(), __.dedup().order()},
-                    {__.identity().order().dedup(), __.dedup().order()},
-                    {__.order().identity().dedup(), __.dedup().order()},
-                    {__.order().out().dedup(), __.order().out().dedup()},
-                    {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
-                    {__.dedup().filter(__.out()).has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
-                    {__.filter(__.out()).dedup().has("value", 0), __.has("value", 0).filter(__.out()).dedup()},
-                    {__.has("value", 0).filter(__.out()).dedup(), __.has("value", 0).filter(__.out()).dedup()},
-            });
-        }
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java
index 6665cfa..09325e0 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/verification/LambdaRestrictionStrategyTest.java
@@ -24,6 +24,9 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.DedupBijectionStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IdentityRemovalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.LambdaRestrictionStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversalStrategies;
 import org.junit.Test;
 import org.junit.runner.RunWith;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-driver/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-driver/pom.xml b/gremlin-driver/pom.xml
index bdf2af6..c158ce5 100644
--- a/gremlin-driver/pom.xml
+++ b/gremlin-driver/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.0-SNAPSHOT</version>
+        <version>3.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-driver</artifactId>
     <name>Apache TinkerPop :: Gremlin Driver</name>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/pom.xml b/gremlin-groovy-test/pom.xml
index ab3d253..7230e10 100644
--- a/gremlin-groovy-test/pom.xml
+++ b/gremlin-groovy-test/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.0-SNAPSHOT</version>
+        <version>3.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-groovy-test</artifactId>
     <name>Apache TinkerPop :: Gremlin Groovy Test</name>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
index ced0753..024ed6c 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/branch/GroovyRepeatTest.groovy
@@ -18,9 +18,9 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.branch
 
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.process.traversal.Path
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -74,10 +74,5 @@ public abstract class GroovyRepeatTest {
         public Traversal<Vertex, Map<String, Long>> get_g_V_repeatXgroupCountXmX_byXnameX_outX_timesX2X_capXmX() {
             TraversalScriptHelper.compute("g.V.repeat(groupCount('m').by('name').out).times(2).cap('m')", g)
         }
-
-        @Override
-        public Traversal<Vertex, Map<String, Vertex>> get_g_V_repeatXbothX_timesX10X_asXaX_out_asXbX_selectXa_bX() {
-            TraversalScriptHelper.compute("g.V.repeat(both()).times(10).as('a').out().as('b').select('a', 'b')", g);
-        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
index 016749f..3c4e48f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyCountTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
 /**
@@ -45,17 +45,12 @@ public abstract class GroovyCountTest {
 
         @Override
         public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX3X_count() {
-            TraversalScriptHelper.compute("g.V().repeat(__.out).times(3).count()", g)
+            TraversalScriptHelper.compute("g.V().repeat(__.out).times(3).count()", g);
         }
 
         @Override
         public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX8X_count() {
-            TraversalScriptHelper.compute("g.V.repeat(__.out).times(8).count()", g)
-        }
-
-        @Override
-        public Traversal<Vertex, Long> get_g_V_repeatXoutX_timesX5X_asXaX_outXwrittenByX_asXbX_selectXa_bX_count() {
-            TraversalScriptHelper.compute("g.V.repeat(out()).times(5).as('a').out('writtenBy').as('b').select('a', 'b').count()", g)
+            TraversalScriptHelper.compute("g.V.repeat(__.out).times(8).count()", g);
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyLoopsTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyLoopsTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyLoopsTest.groovy
deleted file mode 100644
index 6704a51..0000000
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyLoopsTest.groovy
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.map
-
-import org.apache.tinkerpop.gremlin.process.traversal.Path
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
-import org.apache.tinkerpop.gremlin.structure.Vertex
-
-/**
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public abstract class GroovyLoopsTest {
-
-    public static class Traversals extends LoopsTest {
-
-        @Override
-        Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX3XX_hasXname_peterX_path_byXnameX(
-                final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).repeat(__.both.simplePath).until(has('name', 'peter').or.loops.is(3)).has('name', 'peter').path.by('name')", g, "v1Id", v1Id)
-        }
-
-        @Override
-        Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_or_loops_isX2XX_hasXname_peterX_path_byXnameX(
-                final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).repeat(__.both.simplePath).until(has('name', 'peter').or.loops.is(2)).has('name', 'peter').path.by('name')", g, "v1Id", v1Id)
-        }
-
-        @Override
-        Traversal<Vertex, Path> get_g_VX1X_repeatXboth_simplePathX_untilXhasXname_peterX_and_loops_isX3XX_hasXname_peterX_path_byXnameX(
-                final Object v1Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).repeat(__.both.simplePath).until(has('name', 'peter').and.loops.is(3)).has('name', 'peter').path.by('name')", g, "v1Id", v1Id)
-        }
-
-        @Override
-        Traversal<Vertex, String> get_g_V_emitXhasXname_markoX_or_loops_isX2XX_repeatXoutX_valuesXnameX() {
-            TraversalScriptHelper.compute("g.V.emit(has('name', 'marko').or.loops.is(2)).repeat(__.out).name", g)
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapKeysTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapKeysTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapKeysTest.groovy
index 648ffab..de16a1d 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapKeysTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapKeysTest.groovy
@@ -34,10 +34,5 @@ public abstract class GroovyMapKeysTest {
         public Traversal<Vertex, Double> get_g_V_outE_valuesXweightX_groupCount_mapKeys() {
             TraversalScriptHelper.compute("g.V.outE().weight.groupCount().mapKeys()", g)
         }
-
-        @Override
-        public Traversal<Vertex, Double> get_g_V_outE_valuesXweightX_groupCount_unfold_mapKeys() {
-            TraversalScriptHelper.compute("g.V.outE().weight.groupCount().unfold().mapKeys()", g)
-        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapValuesTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapValuesTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapValuesTest.groovy
index 4572b73..67998f4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapValuesTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMapValuesTest.groovy
@@ -36,11 +36,6 @@ public abstract class GroovyMapValuesTest {
         }
 
         @Override
-        public Traversal<Vertex, Long> get_g_V_outE_valuesXweightX_groupCount_unfold_mapValues() {
-            TraversalScriptHelper.compute("g.V.outE().weight.groupCount().unfold().mapValues()", g)
-        }
-
-        @Override
         public Traversal<Vertex, Long> get_g_V_outE_valuesXweightX_groupCount_mapValues_groupCount_mapValues() {
             TraversalScriptHelper.compute("g.V.outE().weight.groupCount().mapValues().groupCount().mapValues()", g)
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
index c2f9d43..d68a88e 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyMatchTest.groovy
@@ -48,11 +48,6 @@ public abstract class GroovyMatchTest {
     public abstract static class Traversals extends MatchTest {
 
         @Override
-        public Traversal<Vertex, Map<String, Object>> get_g_V_valueMap_matchXa_selectXnameX_bX() {
-            TraversalScriptHelper.compute("g.V.valueMap.match(__.as('a').select('name').as('b'))", g)
-        }
-
-        @Override
         public Traversal<Vertex, Map<String, Vertex>> get_g_V_matchXa_out_bX() {
             TraversalScriptHelper.compute("g.V.match(__.as('a').out.as('b'))", g)
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
index 220951c..409172f 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyUnfoldTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -39,10 +39,7 @@ public abstract class GroovyUnfoldTest {
         public Traversal<Vertex, String> get_g_V_valueMap_unfold_mapXkeyX() {
             TraversalScriptHelper.compute("g.V.valueMap.unfold.map { it.key }", g)
         }
-
-        @Override
-        Traversal<Vertex, String> get_g_VX1X_repeatXboth_simplePathX_untilXhasIdX6XX_path_byXnameX_unfold(Object v1Id, Object v6Id) {
-            TraversalScriptHelper.compute("g.V(v1Id).repeat(__.both.simplePath).until(hasId(v6Id)).path.by('name').unfold", g, "v1Id", v1Id, "v6Id", v6Id)
-        }
     }
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
index 34a567e..71041e4 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyVertexTest.groovy
@@ -18,8 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map
 
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalScriptHelper
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Vertex
 
@@ -31,16 +31,6 @@ public abstract class GroovyVertexTest {
     public static class Traversals extends VertexTest {
 
         @Override
-        public Traversal<Vertex, String> get_g_VXlistXv1_v2_v3XX_name() {
-            TraversalScriptHelper.compute("g.V(ids).name", g, "ids", [convertToVertex(graph, "marko"), convertToVertex(graph, "vadas"), convertToVertex(graph, "lop")])
-        }
-
-        @Override
-        public Traversal<Vertex, String> get_g_VXlistX1_2_3XX_name() {
-            TraversalScriptHelper.compute("g.V(ids).name", g, "ids", [convertToVertexId(graph, "marko"), convertToVertexId(graph, "vadas"), convertToVertexId(graph, "lop")])
-        }
-
-        @Override
         public Traversal<Vertex, Vertex> get_g_V() {
             TraversalScriptHelper.compute("g.V", g);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
index 1edbc54..4efbbcf 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GroovyProfileTest.groovy
@@ -35,7 +35,7 @@ public abstract class GroovyProfileTest {
         }
 
         @Override
-        public Traversal<Vertex, Vertex> get_g_V_repeatXbothX_timesX3X_profile() {
+        public Traversal<Vertex, Vertex> get_g_V_repeat_both_profile() {
             TraversalScriptHelper.compute("g.V.repeat(__.both()).times(3).profile()", g);
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
index dfde060..6a24469 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessComputerSuite.java
@@ -105,7 +105,6 @@ public class GroovyProcessComputerSuite extends ProcessComputerSuite {
             GroovyConstantTest.Traversals.class,
             GroovyCountTest.Traversals.class,
             GroovyFoldTest.Traversals.class,
-            GroovyLoopsTest.Traversals.class,
             GroovyMapTest.Traversals.class,
             GroovyMapKeysTest.Traversals.class,
             GroovyMapValuesTest.Traversals.class,

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
index 729b5df..ef97c97 100644
--- a/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
+++ b/gremlin-groovy-test/src/main/java/org/apache/tinkerpop/gremlin/process/GroovyProcessStandardSuite.java
@@ -77,7 +77,6 @@ public class GroovyProcessStandardSuite extends ProcessStandardSuite {
             GroovyConstantTest.Traversals.class,
             GroovyCountTest.Traversals.class,
             GroovyFoldTest.Traversals.class,
-            GroovyLoopsTest.Traversals.class,
             GroovyMapTest.Traversals.class,
             GroovyMapKeysTest.Traversals.class,
             GroovyMapValuesTest.Traversals.class,

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-groovy/pom.xml b/gremlin-groovy/pom.xml
index eefc871..69b5e0c 100644
--- a/gremlin-groovy/pom.xml
+++ b/gremlin-groovy/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.0-SNAPSHOT</version>
+        <version>3.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-groovy</artifactId>
     <name>Apache TinkerPop :: Gremlin Groovy</name>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
index 99bf36f..3d2048b 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
@@ -82,6 +82,7 @@ public class GremlinExecutor implements AutoCloseable {
     private final Map<String, EngineSettings> settings;
     private final long scriptEvaluationTimeout;
     private final Bindings globalBindings;
+    private final Predicate<Map.Entry<String,Object>> promoteBinding;
     private final List<List<String>> use;
     private final ExecutorService executorService;
     private final ScheduledExecutorService scheduledExecutorService;
@@ -106,6 +107,7 @@ public class GremlinExecutor implements AutoCloseable {
         this.settings = builder.settings;
         this.scriptEvaluationTimeout = builder.scriptEvaluationTimeout;
         this.globalBindings = builder.globalBindings;
+        this.promoteBinding = builder.promoteBinding;
         this.enabledPlugins = builder.enabledPlugins;
         this.scriptEngines = createScriptEngines();
         this.suppliedExecutor = suppliedExecutor;
@@ -420,12 +422,23 @@ public class GremlinExecutor implements AutoCloseable {
                         // evaluate init scripts with hard reference so as to ensure it doesn't get garbage collected
                         bindings.put(GremlinGroovyScriptEngine.KEY_REFERENCE_TYPE, GremlinGroovyScriptEngine.REFERENCE_TYPE_HARD);
 
-                        // the returned object should be a Map of initialized global bindings
+                        // todo: drop the "old method" in 3.1.0
+                        // the returned object should be a Map of initialized global bindings - this is in contrast
+                        // to the older method of scanning bindings for certain types/keys to promote.  the reason
+                        // for this change has to do with CompileStatic/TypeChecked "secure" configurations that
+                        // require the defined variables to be typed.  Under that scenario they are not "unresolved"
+                        // and thus don't get set to bindings automatically by the InvokerHelper.
                         final Object initializedBindings = se.eval(p.getValue1(), bindings, language);
-                        if (initializedBindings != null && initializedBindings instanceof Map)
+                        if (initializedBindings != null && initializedBindings instanceof Map) {
                             globalBindings.putAll((Map) initializedBindings);
-                        else
-                            logger.warn("Initialization script {} did not return a Map - no global bindings specified", p.getValue0());
+                        } else {
+                            // re-assign graph bindings back to global bindings and grab TraversalSource creations.
+                            // prevent assignment of non-graph implementations just in case someone tries to overwrite
+                            // them in the init
+                            bindings.entrySet().stream()
+                                    .filter(promoteBinding)
+                                    .forEach(kv -> globalBindings.put(kv.getKey(), kv.getValue()));
+                        }
 
                         logger.info("Initialized {} ScriptEngine with {}", language, p.getValue0());
                     } catch (ScriptException sx) {
@@ -469,6 +482,7 @@ public class GremlinExecutor implements AutoCloseable {
         };
         private List<List<String>> use = new ArrayList<>();
         private Bindings globalBindings = new SimpleBindings();
+        private Predicate<Map.Entry<String,Object>> promoteBinding = kv -> false;
 
         private Builder() {
         }
@@ -495,6 +509,16 @@ public class GremlinExecutor implements AutoCloseable {
         }
 
         /**
+         * A predicate applied to the binding list to determine if it should be promoted to a "global" binding
+         * that should be tied to every script.
+         */
+        @Deprecated
+        public Builder promoteBindings(final Predicate<Map.Entry<String,Object>> promoteBinding) {
+            this.promoteBinding = promoteBinding;
+            return this;
+        }
+
+        /**
          * Bindings to apply to every script evaluated.
          */
         public Builder globalBindings(final Bindings bindings) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorTest.java
index 1c164da..1268a3e 100644
--- a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorTest.java
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorTest.java
@@ -412,20 +412,23 @@ public class GremlinExecutorTest {
     }
 
     @Test
-    public void shouldInitializeWithScriptAndMakeGlobalBinding() throws Exception {
+    public void shouldInitializeWithScriptAndPromoteBinding() throws Exception {
         final GremlinExecutor gremlinExecutor = GremlinExecutor.build()
                 .addEngineSettings("gremlin-groovy",
                         Collections.emptyList(),
                         Collections.emptyList(),
                         Arrays.asList(PATHS.get("GremlinExecutorInit.groovy")),
                         Collections.emptyMap())
+                .promoteBindings(kv -> kv.getValue() instanceof Set)
                 .create();
 
         assertEquals(2, gremlinExecutor.eval("add(1,1)").get());
-        assertThat(gremlinExecutor.getGlobalBindings().keySet(), not(contains("someSet")));
-        assertThat(gremlinExecutor.getGlobalBindings().keySet(), contains("name"));
+        assertThat(gremlinExecutor.getGlobalBindings().keySet(), contains("someSet"));
+        assertThat(gremlinExecutor.getGlobalBindings().keySet(), not(contains("someMap")));
 
-        assertEquals("stephen", gremlinExecutor.getGlobalBindings().get("name"));
+        final Set<String> s = (Set<String>) gremlinExecutor.getGlobalBindings().get("someSet");
+        assertThat(s, contains("test"));
+        assertEquals(1, s.size());
 
         gremlinExecutor.close();
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-groovy/src/test/resources/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorInit.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/resources/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorInit.groovy b/gremlin-groovy/src/test/resources/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorInit.groovy
index 6f92355..db046b0 100644
--- a/gremlin-groovy/src/test/resources/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorInit.groovy
+++ b/gremlin-groovy/src/test/resources/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutorInit.groovy
@@ -19,4 +19,5 @@
 def add(x, y) { x + y }
 
 someSet = ["test"] as Set
-[name:"stephen"]
+someMap = [name:"stephen"]
+""
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/conf/gremlin-server-classic.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-classic.yaml b/gremlin-server/conf/gremlin-server-classic.yaml
index a054346..0023de4 100644
--- a/gremlin-server/conf/gremlin-server-classic.yaml
+++ b/gremlin-server/conf/gremlin-server-classic.yaml
@@ -31,7 +31,7 @@ scriptEngines: {
     staticImports: [java.lang.Math.PI],
     scripts: [scripts/complex-lifecycle.groovy]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}       # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 }                                             # application/vnd.gremlin-v1.0+gryo
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}   # application/vnd.gremlin-v1.0+gryo-stringd
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/conf/gremlin-server-modern-readonly.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-modern-readonly.yaml b/gremlin-server/conf/gremlin-server-modern-readonly.yaml
index 1f44153..ba2d108 100644
--- a/gremlin-server/conf/gremlin-server-modern-readonly.yaml
+++ b/gremlin-server/conf/gremlin-server-modern-readonly.yaml
@@ -31,7 +31,7 @@ scriptEngines: {
     staticImports: [java.lang.Math.PI],
     scripts: [scripts/generate-modern-readonly.groovy]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}       # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 }                                             # application/vnd.gremlin-v1.0+gryo
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}   # application/vnd.gremlin-v1.0+gryo-stringd
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/conf/gremlin-server-modern.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-modern.yaml b/gremlin-server/conf/gremlin-server-modern.yaml
index 35b1f54..8b009e5 100644
--- a/gremlin-server/conf/gremlin-server-modern.yaml
+++ b/gremlin-server/conf/gremlin-server-modern.yaml
@@ -31,7 +31,7 @@ scriptEngines: {
     staticImports: [java.lang.Math.PI],
     scripts: [scripts/generate-modern.groovy]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}       # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 }                                             # application/vnd.gremlin-v1.0+gryo
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}   # application/vnd.gremlin-v1.0+gryo-stringd
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/conf/gremlin-server-secure.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-secure.yaml b/gremlin-server/conf/gremlin-server-secure.yaml
index 20ae461..7fce9f7 100644
--- a/gremlin-server/conf/gremlin-server-secure.yaml
+++ b/gremlin-server/conf/gremlin-server-secure.yaml
@@ -45,7 +45,7 @@ scriptEngines: {
               "org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptCustomizerProvider":[10000],
               "org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.CompileStaticCustomizerProvider":["org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.SimpleSandboxExtension"]}}}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}       # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 }                                             # application/vnd.gremlin-v1.0+gryo
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}   # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0 }                                  # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0 }                                         # application/json

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/conf/gremlin-server.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server.yaml b/gremlin-server/conf/gremlin-server.yaml
index 7899b56..e6c0d1b 100644
--- a/gremlin-server/conf/gremlin-server.yaml
+++ b/gremlin-server/conf/gremlin-server.yaml
@@ -35,7 +35,7 @@ scriptEngines: {
       imports: [java.lang.Math],
       staticImports: [java.lang.Math.PI]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}       # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 }                                             # application/vnd.gremlin-v1.0+gryo
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}   # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0 }                                  # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0 }                                         # application/json

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index 57bbaff..9a9a110 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.0-SNAPSHOT</version>
+        <version>3.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-server</artifactId>
     <name>Apache TinkerPop :: Gremlin Server</name>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/Session.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/Session.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/Session.java
index 4c2364e..e998c3a 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/Session.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/op/session/Session.java
@@ -135,6 +135,8 @@ public class Session {
                 })
                 .enabledPlugins(new HashSet<>(settings.plugins))
                 .globalBindings(graphManager.getAsBindings())
+                .promoteBindings(kv -> kv.getValue() instanceof Graph
+                        || kv.getValue() instanceof TraversalSource)
                 .executorService(executor)
                 .scheduledExecutorService(scheduledExecutorService);
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
index a3a2175..02a763a 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
@@ -95,6 +95,7 @@ public class ServerGremlinExecutor<T extends ScheduledExecutorService> {
 
         logger.info("Initialized Gremlin thread pool.  Threads in pool named with pattern gremlin-*");
 
+        // todo: deprecate promoteBindings in 3.1.0
         final GremlinExecutor.Builder gremlinExecutorBuilder = GremlinExecutor.build()
                 .scriptEvaluationTimeout(settings.scriptEvaluationTimeout)
                 .afterFailure((b, e) -> graphManager.rollbackAll())
@@ -102,6 +103,9 @@ public class ServerGremlinExecutor<T extends ScheduledExecutorService> {
                 .afterTimeout(b -> graphManager.rollbackAll())
                 .enabledPlugins(new HashSet<>(settings.plugins))
                 .globalBindings(graphManager.getAsBindings())
+                .promoteBindings(kv -> kv.getValue() instanceof Graph
+                        || kv.getValue() instanceof TraversalSource
+                        || kv.getValue() instanceof LifeCycleHook)
                 .executorService(this.gremlinExecutorService)
                 .scheduledExecutorService(this.scheduledExecutorService);
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
index 2437e16..407436c 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
@@ -370,7 +370,7 @@ public class GremlinDriverIntegrateTest extends AbstractGremlinServerIntegration
         final Cluster cluster = Cluster.open();
         final Client client = cluster.connect();
 
-        final ResultSet results = client.submit("TinkerGraph.open().variables()");
+        final ResultSet results = client.submit("TinkerFactory.createClassic()");
 
         try {
             results.all().join();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
index 7315e71..53bb631 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinResultSetIntegrateTest.java
@@ -115,7 +115,7 @@ public class GremlinResultSetIntegrateTest extends AbstractGremlinServerIntegrat
 
     @Test
     public void shouldHandlePathResult() throws Exception {
-        final ResultSet results = client.submit("g.V().out().path()");
+        final ResultSet results = client.submit("g.V().out().path().next()");
         final Path p = results.all().get().get(0).getPath();
         assertThat(p, instanceOf(DetachedPath.class));
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
index 7b6e5c2..f57225d 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
@@ -34,7 +34,7 @@ scriptEngines: {
       imports: [java.lang.Math],
       staticImports: [java.lang.Math.PI]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph, custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0 }
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
index e907343..8abc6ac 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-performance.yaml
@@ -34,7 +34,7 @@ scriptEngines: {
       imports: [java.lang.Math],
       staticImports: [java.lang.Math.PI]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 }
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0 }
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0 }
 processors:

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-shaded/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-shaded/pom.xml b/gremlin-shaded/pom.xml
index 6861b52..056f694 100644
--- a/gremlin-shaded/pom.xml
+++ b/gremlin-shaded/pom.xml
@@ -20,7 +20,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.0-SNAPSHOT</version>
+        <version>3.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-shaded</artifactId>
     <name>Apache TinkerPop :: Gremlin Shaded</name>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-test/pom.xml b/gremlin-test/pom.xml
index 4433c14..1a412a1 100644
--- a/gremlin-test/pom.xml
+++ b/gremlin-test/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.0-SNAPSHOT</version>
+        <version>3.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-test</artifactId>
     <name>Apache TinkerPop :: Gremlin Test</name>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
index 97dfea2..d05e162 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/AbstractGremlinTest.java
@@ -149,12 +149,12 @@ public abstract class AbstractGremlinTest {
     /**
      * Looks up the identifier as generated by the current source graph being tested.
      *
-     * @param graph          the graph to get the element id from
+     * @param g          the graph to get the element id from
      * @param vertexName a unique string that will identify a graph element within a graph
      * @return the id as generated by the graph
      */
-    public Object convertToVertexId(final Graph graph, final String vertexName) {
-        return convertToVertex(graph, vertexName).id();
+    public Object convertToVertexId(final Graph g, final String vertexName) {
+        return convertToVertex(g, vertexName).id();
     }
 
     public Vertex convertToVertex(final Graph graph, final String vertexName) {
@@ -166,8 +166,8 @@ public abstract class AbstractGremlinTest {
         return convertToVertexPropertyId(graph, vertexName, vertexPropertyKey);
     }
 
-    public GraphTraversal<Vertex, Object> convertToVertexPropertyId(final Graph graph, final String vertexName, final String vertexPropertyKey) {
-        return convertToVertexProperty(graph, vertexName, vertexPropertyKey).id();
+    public GraphTraversal<Vertex, Object> convertToVertexPropertyId(final Graph g, final String vertexName, final String vertexPropertyKey) {
+        return convertToVertexProperty(g, vertexName, vertexPropertyKey).id();
     }
 
     public GraphTraversal<Vertex, VertexProperty<Object>> convertToVertexProperty(final Graph graph, final String vertexName, final String vertexPropertyKey) {
@@ -186,34 +186,34 @@ public abstract class AbstractGremlinTest {
     /**
      * Utility method that commits if the graph supports transactions.
      */
-    public void tryCommit(final Graph graph) {
-        if (graph.features().graph().supportsTransactions())
-            graph.tx().commit();
+    public void tryCommit(final Graph g) {
+        if (g.features().graph().supportsTransactions())
+            g.tx().commit();
     }
 
-    public void tryRandomCommit(final Graph graph) {
-        if (graph.features().graph().supportsTransactions() && new Random().nextBoolean())
-            graph.tx().commit();
+    public void tryRandomCommit(final Graph g) {
+        if (g.features().graph().supportsTransactions() && new Random().nextBoolean())
+            g.tx().commit();
     }
 
     /**
      * Utility method that commits if the graph supports transactions and executes an assertion function before and
      * after the commit.  It assumes that the assertion should be true before and after the commit.
      */
-    public void tryCommit(final Graph graph, final Consumer<Graph> assertFunction) {
-        assertFunction.accept(graph);
-        if (graph.features().graph().supportsTransactions()) {
-            graph.tx().commit();
-            assertFunction.accept(graph);
+    public void tryCommit(final Graph g, final Consumer<Graph> assertFunction) {
+        assertFunction.accept(g);
+        if (g.features().graph().supportsTransactions()) {
+            g.tx().commit();
+            assertFunction.accept(g);
         }
     }
 
     /**
      * Utility method that rollsback if the graph supports transactions.
      */
-    public void tryRollback(final Graph graph) {
-        if (graph.features().graph().supportsTransactions())
-            graph.tx().rollback();
+    public void tryRollback(final Graph g) {
+        if (g.features().graph().supportsTransactions())
+            g.tx().rollback();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java
index 1941ac4..766e70d 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/GraphProvider.java
@@ -29,9 +29,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_P_S_SE_SL_Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_S_SE_SL_Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_P_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.O_Traverser;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -79,8 +78,7 @@ public interface GraphProvider {
         add(DefaultGraphTraversal.class);
         add(GraphTraversalSource.class);
         add(B_O_S_SE_SL_Traverser.class);
-        add(B_LP_O_P_S_SE_SL_Traverser.class);
-        add(B_LP_O_S_SE_SL_Traverser.class);
+        add(B_O_P_S_SE_SL_Traverser.class);
         add(B_O_Traverser.class);
         add(O_Traverser.class);
     }};
@@ -188,7 +186,7 @@ public interface GraphProvider {
      * @param test                   the test class
      * @param testMethodName         the name of the test
      * @param configurationOverrides settings to override defaults with.
-     * @param loadGraphWith          the data set to load and will be null if no data is to be loaded
+     * @param loadGraphWith  the data set to load and will be null if no data is to be loaded
      */
     public Configuration newGraphConfiguration(final String graphName,
                                                final Class<?> test,
@@ -238,7 +236,7 @@ public interface GraphProvider {
      * <li>{@link Graph}</li>
      * <li>{@link org.apache.tinkerpop.gremlin.structure.Graph.Variables}</li>
      * <li>{@link GraphTraversal}</li>
-     * <li>{@link B_LP_O_P_S_SE_SL_Traverser}</li>
+     * <li>{@link B_O_P_S_SE_SL_Traverser}</li>
      * <li>{@link Property}</li>
      * <li>{@link B_O_S_SE_SL_Traverser}</li>
      * <li>{@link Traversal}</li>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
index f859267..a14fc25 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
@@ -41,7 +41,27 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SampleTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SimplePathTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTest;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.*;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.CoalesceTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ConstantTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.FoldTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapKeysTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapValuesTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.UnfoldTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ValueMapTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AggregateTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupCountTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupTest;
@@ -110,7 +130,6 @@ public class ProcessComputerSuite extends AbstractGremlinSuite {
             CountTest.Traversals.class,
             FlatMapTest.Traversals.class,
             FoldTest.Traversals.class,
-            LoopsTest.Traversals.class,
             MapTest.Traversals.class,
             MapKeysTest.Traversals.class,
             MapValuesTest.Traversals.class,

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
index c380391..4c9d8e6 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessStandardSuite.java
@@ -83,7 +83,6 @@ public class ProcessStandardSuite extends AbstractGremlinSuite {
             CountTest.Traversals.class,
             FlatMapTest.Traversals.class,
             FoldTest.Traversals.class,
-            LoopsTest.Traversals.class,
             MapTest.Traversals.class,
             MapKeysTest.Traversals.class,
             MapValuesTest.Traversals.class,
@@ -169,7 +168,6 @@ public class ProcessStandardSuite extends AbstractGremlinSuite {
             CountTest.class,
             FlatMapTest.class,
             FoldTest.class,
-            LoopsTest.class,
             MapTest.class,
             MapKeysTest.class,
             MapValuesTest.class,



[3/6] incubator-tinkerpop git commit: Revert "Merge remote-tracking branch 'origin' into tp30"

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStep.java
index 26e7264..773a48b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/RangeLocalStep.java
@@ -68,15 +68,13 @@ public final class RangeLocalStep<S> extends MapStep<S, S> {
     static <S> S applyRange(final S start, final long low, final long high) {
         if (start instanceof Map) {
             return (S) applyRangeMap((Map) start, low, high);
-        } else if (start instanceof Iterable) {
-            return (S) applyRangeIterable((Iterable) start, low, high);
+        } else if (start instanceof Collection) {
+            return (S) applyRangeCollection((Collection) start, low, high);
         }
         return start;
     }
 
-    /**
-     * Extracts specified range of elements from a Map.
-     */
+    /** Extracts specified range of elements from a Map. */
     private static Map applyRangeMap(final Map map, final long low, final long high) {
         final long capacity = (high != -1 ? high : map.size()) - low;
         final Map result = new LinkedHashMap((int) Math.min(capacity, map.size()));
@@ -93,10 +91,8 @@ public final class RangeLocalStep<S> extends MapStep<S, S> {
         return result;
     }
 
-    /**
-     * Extracts specified range of elements from a Collection.
-     */
-    private static Object applyRangeIterable(final Iterable<Object> iterable, final long low, final long high) {
+    /** Extracts specified range of elements from a Collection. */
+    private static Object applyRangeCollection(final Collection collection, final long low, final long high) {
         // See if we only want a single item.  It is also possible that we will allow more than one item, but that the
         // incoming container is only capable of producing a single item.  In that case, we will still emit a
         // container.  This allows the result type to be predictable based on the step arguments.  It also allows us to
@@ -104,10 +100,10 @@ public final class RangeLocalStep<S> extends MapStep<S, S> {
         boolean single = high != -1 ? (high - low == 1) : false;
 
         final Collection resultCollection =
-                single ? null : (iterable instanceof Set) ? new LinkedHashSet() : new LinkedList();
+            single ? null : (collection instanceof Set) ? new LinkedHashSet() : new LinkedList();
         Object result = single ? null : resultCollection;
         long c = 0L;
-        for (final Object item : iterable) {
+        for (final Object item : collection) {
             if (c >= low) {
                 if (c < high || high == -1) {
                     if (single) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStep.java
index ea678a5..43f6d9d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/TailLocalStep.java
@@ -19,12 +19,10 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -52,9 +50,7 @@ public final class TailLocalStep<S> extends MapStep<S, S> {
         final long high =
                 start instanceof Map ? ((Map) start).size() :
                         start instanceof Collection ? ((Collection) start).size() :
-                                start instanceof Path ? ((Path) start).size() :
-                                        start instanceof Iterable ? IteratorUtils.count((Iterable) start) :
-                                                this.limit;
+                                this.limit;
         final long low = high - this.limit;
         final S result = RangeLocalStep.applyRange(start, low, high);
         return result;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GraphStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GraphStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GraphStep.java
index b0472b2..1cfdbee 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GraphStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/GraphStep.java
@@ -29,7 +29,6 @@ import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.EmptyIterator;
 
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.function.Supplier;
@@ -47,10 +46,11 @@ public class GraphStep<S extends Element> extends StartStep<S> implements Engine
     public GraphStep(final Traversal.Admin traversal, final Class<S> returnClass, final Object... ids) {
         super(traversal);
         this.returnClass = returnClass;
-        this.ids = (ids.length == 1 && ids[0] instanceof Collection) ? ((Collection) ids[0]).toArray(new Object[((Collection) ids[0]).size()]) : ids;
+        this.ids = ids;
+
         this.iteratorSupplier = () -> (Iterator<S>) (Vertex.class.isAssignableFrom(this.returnClass) ?
-                this.getTraversal().getGraph().get().vertices(this.ids) :
-                this.getTraversal().getGraph().get().edges(this.ids));
+                    this.getTraversal().getGraph().get().vertices(this.ids) :
+                    this.getTraversal().getGraph().get().edges(this.ids));
     }
 
     public String toString() {
@@ -85,10 +85,6 @@ public class GraphStep<S extends Element> extends StartStep<S> implements Engine
     public void onEngine(final TraversalEngine traversalEngine) {
         if (traversalEngine.isComputer()) {
             this.iteratorSupplier = Collections::emptyIterator;
-            for(int i=0; i<this.ids.length; i++) {    // if this is going to OLAP, convert to ids so you don't serialize elements
-                if(this.ids[i] instanceof Element)
-                    this.ids[i] = ((Element)this.ids[i]).id();
-            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java
index 4d9b7d2..e141e61 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/AbstractStep.java
@@ -40,8 +40,8 @@ public abstract class AbstractStep<S, E> implements Step<S, E> {
     protected String id = Traverser.Admin.HALT;
     protected Traversal.Admin traversal;
     protected ExpandableStepIterator<S> starts;
-    protected Traverser.Admin<E> nextEnd = null;
-    protected boolean traverserStepIdAndLabelsSetByChild = false;
+    protected Traverser<E> nextEnd = null;
+    protected boolean traverserStepIdSetByChild = false;
 
     protected Step<?, S> previousStep = EmptyStep.instance();
     protected Step<E, ?> nextStep = EmptyStep.instance();
@@ -123,7 +123,7 @@ public abstract class AbstractStep<S, E> implements Step<S, E> {
             }
         } else {
             while (true) {
-                final Traverser.Admin<E> traverser = (Traverser.Admin<E>) this.processNextStart();
+                final Traverser<E> traverser = this.processNextStart();
                 if (null != traverser.get() && 0 != traverser.bulk())
                     return this.prepareTraversalForNextStep(traverser);
             }
@@ -137,7 +137,7 @@ public abstract class AbstractStep<S, E> implements Step<S, E> {
         else {
             try {
                 while (true) {
-                    this.nextEnd = (Traverser.Admin<E>) this.processNextStart();
+                    this.nextEnd = this.processNextStart();
                     if (null != this.nextEnd.get() && 0 != this.nextEnd.bulk())
                         return true;
                     else
@@ -197,11 +197,9 @@ public abstract class AbstractStep<S, E> implements Step<S, E> {
         return result;
     }
 
-    private final Traverser.Admin<E> prepareTraversalForNextStep(final Traverser.Admin<E> traverser) {
-        if (!this.traverserStepIdAndLabelsSetByChild) {
-            traverser.setStepId(this.nextStep.getId());
-            traverser.addLabels(this.labels);
-        }
+    private final Traverser<E> prepareTraversalForNextStep(final Traverser<E> traverser) {
+        if (!this.traverserStepIdSetByChild) ((Traverser.Admin<E>) traverser).setStepId(this.nextStep.getId());
+        if (!this.labels.isEmpty()) this.labels.forEach(label -> traverser.path().addLabel(label));
         return traverser;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
index 2c7ecc5..a8cc2d3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ComputerAwareStep.java
@@ -44,13 +44,13 @@ public abstract class ComputerAwareStep<S, E> extends AbstractStep<S, E> impleme
         while (true) {
             if (this.previousIterator.hasNext())
                 return this.previousIterator.next();
-            this.previousIterator = this.traverserStepIdAndLabelsSetByChild ? this.computerAlgorithm() : this.standardAlgorithm();
+            this.previousIterator = this.traverserStepIdSetByChild ? this.computerAlgorithm() : this.standardAlgorithm();
         }
     }
 
     @Override
     public void onEngine(final TraversalEngine engine) {
-        this.traverserStepIdAndLabelsSetByChild = engine.isComputer();
+        this.traverserStepIdSetByChild = engine.isComputer();
     }
 
     @Override
@@ -75,10 +75,8 @@ public abstract class ComputerAwareStep<S, E> extends AbstractStep<S, E> impleme
         @Override
         protected Traverser<S> processNextStart() throws NoSuchElementException {
             final Traverser.Admin<S> start = this.starts.next();
-            if (this.traverserStepIdAndLabelsSetByChild) {
-                start.setStepId(((ComputerAwareStep<?, ?>) this.getTraversal().getParent()).getNextStep().getId());
-                start.addLabels(((ComputerAwareStep<?, ?>) this.getTraversal().getParent()).getLabels());
-            }
+            if (this.traverserStepIdSetByChild)
+                start.setStepId(((ComputerAwareStep)this.getTraversal().getParent()).getNextStep().getId());
             return start;
         }
 
@@ -89,7 +87,7 @@ public abstract class ComputerAwareStep<S, E> extends AbstractStep<S, E> impleme
 
         @Override
         public void onEngine(final TraversalEngine engine) {
-            this.traverserStepIdAndLabelsSetByChild = engine.isComputer();
+            this.traverserStepIdSetByChild = engine.isComputer();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java
index c40f228..72d8c01 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java
@@ -47,11 +47,6 @@ public final class EmptyPath implements Path, Serializable {
     }
 
     @Override
-    public Path extend(final Set<String> labels) {
-        return this;
-    }
-
-    @Override
     public <A> A get(final String label) {
         throw Path.Exceptions.stepWithProvidedLabelDoesNotExist(label);
     }
@@ -67,6 +62,11 @@ public final class EmptyPath implements Path, Serializable {
     }
 
     @Override
+    public void addLabel(final String label) {
+
+    }
+
+    @Override
     public List<Object> objects() {
         return Collections.emptyList();
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
index 1a916ca..93f7623 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
@@ -20,7 +20,6 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.util;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
-import org.apache.tinkerpop.gremlin.structure.Element;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -52,6 +51,10 @@ public class ImmutablePath implements Path, ImmutablePathImpl, Serializable, Clo
         return this;
     }
 
+    private ImmutablePath(final Object currentObject, final Set<String> currentLabels) {
+        this(TailPath.instance(), currentObject, currentLabels);
+    }
+
     private ImmutablePath(final ImmutablePathImpl previousPath, final Object currentObject, final Set<String> currentLabels) {
         this.previousPath = previousPath;
         this.currentObject = currentObject;
@@ -69,14 +72,6 @@ public class ImmutablePath implements Path, ImmutablePathImpl, Serializable, Clo
     }
 
     @Override
-    public Path extend(final Set<String> labels) {
-        final Set<String> temp = new LinkedHashSet<>();
-        temp.addAll(this.currentLabels);
-        temp.addAll(labels);
-        return new ImmutablePath(this.previousPath, this.currentObject, temp);
-    }
-
-    @Override
     public <A> A get(final int index) {
         return (this.size() - 1) == index ? (A) this.currentObject : this.previousPath.get(index);
     }
@@ -135,8 +130,13 @@ public class ImmutablePath implements Path, ImmutablePathImpl, Serializable, Clo
     }
 
     @Override
+    public void addLabel(final String label) {
+        this.currentLabels.add(label);
+    }
+
+    @Override
     public List<Object> objects() {
-        final List<Object> objectPath = new ArrayList<>();    // TODO: optimize
+        final List<Object> objectPath = new ArrayList<>();
         objectPath.addAll(this.previousPath.objects());
         objectPath.add(this.currentObject);
         return Collections.unmodifiableList(objectPath);
@@ -144,7 +144,7 @@ public class ImmutablePath implements Path, ImmutablePathImpl, Serializable, Clo
 
     @Override
     public List<Set<String>> labels() {
-        final List<Set<String>> labelPath = new ArrayList<>();   // TODO: optimize
+        final List<Set<String>> labelPath = new ArrayList<>();
         labelPath.addAll(this.previousPath.labels());
         labelPath.add(this.currentLabels);
         return Collections.unmodifiableList(labelPath);
@@ -155,28 +155,6 @@ public class ImmutablePath implements Path, ImmutablePathImpl, Serializable, Clo
         return this.objects().toString();
     }
 
-    @Override
-    public int hashCode() {
-        return this.objects().hashCode();
-    }
-
-    @Override
-    public boolean equals(final Object other) {
-        if (!(other instanceof Path))
-            return false;
-        final Path otherPath = (Path) other;
-        if (otherPath.size() != this.size())
-            return false;
-        for (int i = this.size() - 1; i >= 0; i--) {
-            if (!this.get(i).equals(otherPath.get(i)))
-                return false;
-            if (!this.labels().get(i).equals(otherPath.labels().get(i)))
-                return false;
-        }
-        return true;
-    }
-
-
     private static class TailPath implements Path, ImmutablePathImpl {
         private static final TailPath INSTANCE = new TailPath();
 
@@ -191,12 +169,7 @@ public class ImmutablePath implements Path, ImmutablePathImpl, Serializable, Clo
 
         @Override
         public Path extend(final Object object, final Set<String> labels) {
-            return new ImmutablePath(TailPath.instance(), object, labels);
-        }
-
-        @Override
-        public Path extend(final Set<String> labels) {
-            throw new UnsupportedOperationException("A head path can not have labels added to it");
+            return new ImmutablePath(object, labels);
         }
 
         @Override
@@ -233,6 +206,11 @@ public class ImmutablePath implements Path, ImmutablePathImpl, Serializable, Clo
         }
 
         @Override
+        public void addLabel(final String label) {
+            throw new UnsupportedOperationException("A head path can not have labels added to it");
+        }
+
+        @Override
         public List<Object> objects() {
             return Collections.emptyList();
         }
@@ -247,7 +225,6 @@ public class ImmutablePath implements Path, ImmutablePathImpl, Serializable, Clo
             return true;
         }
 
-        @SuppressWarnings("CloneDoesntCallSuperClone,CloneDoesntDeclareCloneNotSupportedException")
         @Override
         public TailPath clone() {
             return this;
@@ -258,18 +235,13 @@ public class ImmutablePath implements Path, ImmutablePathImpl, Serializable, Clo
         }
 
         @Override
-        public String toString() {
-            return Collections.emptyList().toString();
-        }
-
-        @Override
-        public int hashCode() {
-            return Collections.emptyList().hashCode();
+        public boolean equals(final Object object) {
+            return object instanceof TailPath;
         }
 
         @Override
-        public boolean equals(final Object other) {
-            return other instanceof Path && ((Path) other).size() == 0;
+        public String toString() {
+            return Collections.emptyList().toString();
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
index 0a35f90..67f9d57 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
@@ -24,7 +24,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.Pop;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
@@ -59,9 +58,7 @@ public class MutablePath implements Path, Serializable {
         clone.objects = new ArrayList<>();
         clone.labels = new ArrayList<>();*/
         clone.objects.addAll(this.objects);
-        for (final Set<String> labels : this.labels) {
-            clone.labels.add(new LinkedHashSet<>(labels));
-        }
+        clone.labels.addAll(this.labels);
         return clone;
     }
 
@@ -79,19 +76,13 @@ public class MutablePath implements Path, Serializable {
     }
 
     @Override
-    public Path extend(final Set<String> labels) {
-        this.labels.get(this.labels.size() - 1).addAll(labels);
-        return this;
-    }
-
-    @Override
     public <A> A get(int index) {
         return (A) this.objects.get(index);
     }
 
     @Override
     public <A> A get(final Pop pop, final String label) {
-        if (Pop.all == pop) {
+        if(Pop.all == pop) {
             if (this.hasLabel(label)) {
                 final Object object = this.get(label);
                 if (object instanceof List)
@@ -101,7 +92,7 @@ public class MutablePath implements Path, Serializable {
             } else {
                 return (A) Collections.emptyList();
             }
-        } else {
+        }  else {
             // Override default to avoid building temporary list, and to stop looking when we find the label.
             if (Pop.last == pop) {
                 for (int i = this.labels.size() - 1; i >= 0; i--) {
@@ -124,6 +115,11 @@ public class MutablePath implements Path, Serializable {
     }
 
     @Override
+    public void addLabel(final String label) {
+        this.labels.get(this.labels.size() - 1).add(label);
+    }
+
+    @Override
     public List<Object> objects() {
         return Collections.unmodifiableList(this.objects);
     }
@@ -134,33 +130,7 @@ public class MutablePath implements Path, Serializable {
     }
 
     @Override
-    public Iterator<Object> iterator() {
-        return this.objects.iterator();
-    }
-
-    @Override
     public String toString() {
         return this.objects.toString();
     }
-
-    @Override
-    public int hashCode() {
-        return this.objects.hashCode();
-    }
-
-    @Override
-    public boolean equals(final Object other) {
-        if (!(other instanceof Path))
-            return false;
-        final Path otherPath = (Path) other;
-        if (otherPath.size() != this.size())
-            return false;
-        for (int i = this.size() - 1; i >= 0; i--) {
-            if (!this.objects.get(i).equals(otherPath.get(i)))
-                return false;
-            if (!this.labels.get(i).equals(otherPath.labels().get(i)))
-                return false;
-        }
-        return true;
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/DedupBijectionStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/DedupBijectionStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/DedupBijectionStrategy.java
new file mode 100644
index 0000000..712184d
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/DedupBijectionStrategy.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * {@code DedupBijectionStrategy} does deduplication prior to a non-mutating bijective step if there is no
+ * {@code by()}-modulation on {@code dedup()}. Given that {@link DedupGlobalStep} reduces the number of
+ * objects in the stream, it is cheaper to dedup prior.
+ * <p/>
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ * @example <pre>
+ * __.order().dedup()            // is replaced by __.dedup().order()
+ * </pre>
+ */
+public final class DedupBijectionStrategy extends AbstractTraversalStrategy<TraversalStrategy.OptimizationStrategy> implements TraversalStrategy.OptimizationStrategy {
+
+    private static final DedupBijectionStrategy INSTANCE = new DedupBijectionStrategy();
+    private static final Set<Class<? extends OptimizationStrategy>> PRIORS = new HashSet<>();
+
+    static {
+        PRIORS.add(IdentityRemovalStrategy.class);
+    }
+
+
+    private DedupBijectionStrategy() {
+    }
+
+
+    @Override
+    public void apply(final Traversal.Admin<?, ?> traversal) {
+        if (!TraversalHelper.hasStepOfClass(DedupGlobalStep.class, traversal))
+            return;
+
+        final List<Step> steps = traversal.getSteps();
+        boolean exchangeable = false;
+        for (int i = steps.size() - 1; i >= 0; i--) {
+            final Step curr = steps.get(i);
+            if (exchangeable) {
+                if (curr instanceof OrderGlobalStep) {
+                    final Step next = curr.getNextStep();
+                    traversal.removeStep(next);
+                    traversal.addStep(i, next);
+                }
+                exchangeable = curr instanceof IdentityStep;
+            } else {
+                exchangeable = curr instanceof DedupGlobalStep && ((DedupGlobalStep) curr).getLocalChildren().isEmpty();
+            }
+        }
+    }
+
+    @Override
+    public Set<Class<? extends OptimizationStrategy>> applyPrior() {
+        return PRIORS;
+    }
+
+    public static DedupBijectionStrategy instance() {
+        return INSTANCE;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategy.java
deleted file mode 100644
index eaa69bc..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/FilterRankingStrategy.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.step.LambdaHolder;
-import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
-
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-/**
- * FilterRankingStrategy reorders filter- and order-steps according to their rank. Labeled steps or lambda holders or
- * steps that contain child traversals, that have labeled steps or lambda holders, will not be reordered.
- * <p/>
- * <table>
- * <thead>
- * <tr><th>Step</th><th>Rank</th></tr>
- * </thead>
- * <tbody>
- * <tr><td>is(predicate)</td><td>1</td></tr>
- * <tr><td>has(predicate)</td><td>2</td></tr>
- * <tr><td>where(predicate)</td><td>3</td></tr>
- * <tr><td>simplePath()</td><td>4</td></tr>
- * <tr><td>cyclicPath()</td><td>4</td></tr>
- * <tr><td>filter(traversal)</td><td>5</td></tr>
- * <tr><td>where(traversal)</td><td>6</td></tr>
- * <tr><td>or(...)</td><td>7</td></tr>
- * <tr><td>and(...)</td><td>8</td></tr>
- * <tr><td>dedup()</td><td>9</td></tr>
- * <tr><td>order()</td><td>10</td></tr>
- * </tbody>
- * </table>
- *
- * @author Daniel Kuppitz (http://gremlin.guru)
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- * @example <pre>
- * __.order().dedup()                        // is replaced by __.dedup().order()
- * __.dedup().filter(out()).has("value", 0)  // is replaced by __.has("value", 0).filter(out()).dedup()
- * </pre>
- */
-public final class FilterRankingStrategy extends AbstractTraversalStrategy<TraversalStrategy.OptimizationStrategy> implements TraversalStrategy.OptimizationStrategy {
-
-    private static final FilterRankingStrategy INSTANCE = new FilterRankingStrategy();
-    private static final Set<Class<? extends OptimizationStrategy>> PRIORS = new HashSet<>();
-
-    static {
-        PRIORS.add(IdentityRemovalStrategy.class);
-    }
-
-    private FilterRankingStrategy() {
-    }
-
-    @Override
-    public void apply(final Traversal.Admin<?, ?> traversal) {
-        boolean modified;
-        do {
-            modified = false;
-            final List<Step> steps = traversal.getSteps();
-            int prevRank = 0;
-            for (int i = steps.size() - 1; i >= 0; i--) {
-                final Step curr = steps.get(i);
-                final int rank = rank(curr);
-                if (prevRank > 0 && rank > prevRank) {
-                    final Step next = curr.getNextStep();
-                    traversal.removeStep(next);
-                    traversal.addStep(i, next);
-                    modified = true;
-                }
-                prevRank = rank;
-            }
-        } while (modified);
-    }
-
-    @Override
-    public Set<Class<? extends OptimizationStrategy>> applyPrior() {
-        return PRIORS;
-    }
-
-    public static FilterRankingStrategy instance() {
-        return INSTANCE;
-    }
-
-    /**
-     * Ranks the given step. Steps with lower ranks can be moved in front of steps with higher ranks. 0 means that
-     * the step has no rank and thus is not exchangeable with its neighbors.
-     *
-     * @param step
-     * @return The rank of the given step.
-     */
-    private static int getStepRank(final Step step) {
-        if (step instanceof IsStep) {
-            return 1;
-        } else if (step instanceof HasStep) {
-            return 2;
-        } else if (step instanceof WherePredicateStep) {
-            return 3;
-        } else if (step instanceof SimplePathStep || step instanceof CyclicPathStep) {
-            return 4;
-        } else if (step instanceof TraversalFilterStep) {
-            return 5;
-        } else if (step instanceof WhereTraversalStep) {
-            return 6;
-        } else if (step instanceof OrStep) {
-            return 7;
-        } else if (step instanceof AndStep) {
-            return 8;
-        } else if (step instanceof DedupGlobalStep) {
-            return 9;
-        } else if (step instanceof OrderGlobalStep) {
-            return 10;
-        }
-        return 0;
-    }
-
-    /**
-     * If the given step has no child traversal that holds a lambda, then the actual rank determined by
-     * {@link #getStepRank(Step)} is returned, otherwise 0.
-     *
-     * @param step
-     * @return The rank of the given step.
-     */
-    private static int rank(final Step step) {
-        if (isNotOptimizableStep(step)) {
-            return 0;
-        }
-        final int rank = getStepRank(step);
-        if (rank > 0 && step instanceof TraversalParent) {
-            final TraversalParent tp = (TraversalParent) step;
-            final Iterator<Traversal.Admin<Object, Object>> childTraversalIterator = IteratorUtils.concat(
-                    tp.getLocalChildren().iterator(), tp.getGlobalChildren().iterator());
-            while (childTraversalIterator.hasNext()) {
-                if (TraversalHelper.anyStepRecursively(FilterRankingStrategy::isNotOptimizableStep, childTraversalIterator.next())) {
-                    return 0;
-                }
-            }
-        }
-        return rank;
-    }
-
-    /**
-     * Returns true if the step is not optimizable, otherwise false. A step is not optimizable if it (or any of its
-     * child traversals) is a lambda holder or has a label.
-     *
-     * @param step
-     * @return true if the given step is optimizable, otherwise false.
-     */
-    private static boolean isNotOptimizableStep(final Step step) {
-        return step instanceof LambdaHolder || !step.getLabels().isEmpty();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java
deleted file mode 100644
index c282d30..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_Traverser.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.traverser;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Path;
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.ImmutablePath;
-import org.apache.tinkerpop.gremlin.structure.util.Attachable;
-import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory;
-
-import java.util.Set;
-import java.util.function.Function;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class B_LP_O_P_S_SE_SL_Traverser<T> extends B_O_S_SE_SL_Traverser<T> {
-
-    protected Path path;
-
-    protected B_LP_O_P_S_SE_SL_Traverser() {
-    }
-
-    public B_LP_O_P_S_SE_SL_Traverser(final T t, final Step<T, ?> step, final long initialBulk) {
-        super(t, step, initialBulk);
-        this.path = ImmutablePath.make().extend(t, step.getLabels());
-    }
-
-    /////////////////
-
-    @Override
-    public Path path() {
-        return this.path;
-    }
-
-    /////////////////
-
-    @Override
-    public Traverser.Admin<T> detach() {
-        super.detach();
-        this.path = ReferenceFactory.detach(this.path);
-        return this;
-    }
-
-    /////////////////
-
-    @Override
-    public <R> Traverser.Admin<R> split(final R r, final Step<T, R> step) {
-        final B_LP_O_P_S_SE_SL_Traverser<R> clone = (B_LP_O_P_S_SE_SL_Traverser<R>) super.split(r, step);
-        clone.path = clone.path.clone().extend(r, step.getLabels());
-        return clone;
-    }
-
-    @Override
-    public Traverser.Admin<T> split() {
-        final B_LP_O_P_S_SE_SL_Traverser<T> clone = (B_LP_O_P_S_SE_SL_Traverser<T>) super.split();
-        clone.path = clone.path.clone();
-        return clone;
-    }
-
-    @Override
-    public void addLabels(final Set<String> labels) {
-        if (!labels.isEmpty())
-            this.path = this.path.extend(labels);
-    }
-
-    @Override
-    public int hashCode() {
-        return super.hashCode() + this.path.hashCode();
-    }
-
-    @Override
-    public boolean equals(final Object object) {
-        return (object instanceof B_LP_O_P_S_SE_SL_Traverser)
-                && ((B_LP_O_P_S_SE_SL_Traverser) object).get().equals(this.t)
-                && ((B_LP_O_P_S_SE_SL_Traverser) object).getStepId().equals(this.getStepId())
-                && ((B_LP_O_P_S_SE_SL_Traverser) object).loops() == this.loops()
-                && (null == this.sack)
-                && ((B_LP_O_P_S_SE_SL_Traverser) object).path().equals(this.path);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_TraverserGenerator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_TraverserGenerator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_TraverserGenerator.java
deleted file mode 100644
index 0ba86f5..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_P_S_SE_SL_TraverserGenerator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.traverser;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
-
-import java.util.EnumSet;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class B_LP_O_P_S_SE_SL_TraverserGenerator implements TraverserGenerator {
-
-    private static final B_LP_O_P_S_SE_SL_TraverserGenerator INSTANCE = new B_LP_O_P_S_SE_SL_TraverserGenerator();
-    private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(
-            TraverserRequirement.OBJECT,
-            TraverserRequirement.BULK,
-            TraverserRequirement.SINGLE_LOOP,
-            TraverserRequirement.LABELED_PATH,
-            TraverserRequirement.PATH,
-            TraverserRequirement.SACK,
-            TraverserRequirement.SIDE_EFFECTS);
-
-    private B_LP_O_P_S_SE_SL_TraverserGenerator() {
-    }
-
-    @Override
-    public <S> Traverser.Admin<S> generate(final S start, final Step<S, ?> startStep, final long initialBulk) {
-        return new B_LP_O_P_S_SE_SL_Traverser<>(start, startStep, initialBulk);
-    }
-
-    @Override
-    public Set<TraverserRequirement> getProvidedRequirements() {
-        return REQUIREMENTS;
-    }
-
-    public static B_LP_O_P_S_SE_SL_TraverserGenerator instance() {
-        return INSTANCE;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_Traverser.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_Traverser.java
deleted file mode 100644
index 61683c9..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_Traverser.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- *
- *  * Licensed to the Apache Software Foundation (ASF) under one
- *  * or more contributor license agreements.  See the NOTICE file
- *  * distributed with this work for additional information
- *  * regarding copyright ownership.  The ASF licenses this file
- *  * to you under the Apache License, Version 2.0 (the
- *  * "License"); you may not use this file except in compliance
- *  * with the License.  You may obtain a copy of the License at
- *  *
- *  * http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing,
- *  * software distributed under the License is distributed on an
- *  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  * KIND, either express or implied.  See the License for the
- *  * specific language governing permissions and limitations
- *  * under the License.
- *
- */
-
-package org.apache.tinkerpop.gremlin.process.traversal.traverser;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Path;
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.ImmutablePath;
-import org.apache.tinkerpop.gremlin.structure.util.Attachable;
-import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory;
-
-import java.util.Set;
-import java.util.function.Function;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class B_LP_O_S_SE_SL_Traverser<T> extends B_O_S_SE_SL_Traverser<T> {
-
-    protected Path path;
-
-    protected B_LP_O_S_SE_SL_Traverser() {
-    }
-
-    public B_LP_O_S_SE_SL_Traverser(final T t, final Step<T, ?> step, final long initialBulk) {
-        super(t, step, initialBulk);
-        this.path = ImmutablePath.make();
-        if (!step.getLabels().isEmpty()) this.path = this.path.extend(t, step.getLabels());
-    }
-
-    /////////////////
-
-    @Override
-    public Path path() {
-        return this.path;
-    }
-
-    /////////////////
-
-    @Override
-    public Traverser.Admin<T> detach() {
-        super.detach();
-        this.path = ReferenceFactory.detach(this.path);
-        return this;
-    }
-
-    /////////////////
-
-    @Override
-    public <R> Traverser.Admin<R> split(final R r, final Step<T, R> step) {
-        final B_LP_O_S_SE_SL_Traverser<R> clone = (B_LP_O_S_SE_SL_Traverser<R>) super.split(r, step);
-        clone.path = clone.path.clone();
-        if (!step.getLabels().isEmpty()) clone.path = clone.path.extend(r, step.getLabels());
-        return clone;
-    }
-
-    @Override
-    public Traverser.Admin<T> split() {
-        final B_LP_O_S_SE_SL_Traverser<T> clone = (B_LP_O_S_SE_SL_Traverser<T>) super.split();
-        clone.path = clone.path.clone();
-        return clone;
-    }
-
-    @Override
-    public void addLabels(final Set<String> labels) {
-        if (!labels.isEmpty())
-            this.path = this.path.size() == 0 || !this.path.get(this.path.size() - 1).equals(this.t) ?
-                    this.path.extend(this.t, labels) :
-                    this.path.extend(labels);
-    }
-
-    @Override
-    public int hashCode() {
-        return super.hashCode() + this.path.hashCode();
-    }
-
-    @Override
-    public boolean equals(final Object object) {
-        return (object instanceof B_LP_O_S_SE_SL_Traverser)
-                && ((B_LP_O_S_SE_SL_Traverser) object).get().equals(this.t)
-                && ((B_LP_O_S_SE_SL_Traverser) object).getStepId().equals(this.getStepId())
-                && ((B_LP_O_S_SE_SL_Traverser) object).loops() == this.loops()
-                && (null == this.sack)
-                && ((B_LP_O_S_SE_SL_Traverser) object).path().equals(this.path);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_TraverserGenerator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_TraverserGenerator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_TraverserGenerator.java
deleted file mode 100644
index 4789056..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_LP_O_S_SE_SL_TraverserGenerator.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *
- *  * Licensed to the Apache Software Foundation (ASF) under one
- *  * or more contributor license agreements.  See the NOTICE file
- *  * distributed with this work for additional information
- *  * regarding copyright ownership.  The ASF licenses this file
- *  * to you under the Apache License, Version 2.0 (the
- *  * "License"); you may not use this file except in compliance
- *  * with the License.  You may obtain a copy of the License at
- *  *
- *  * http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing,
- *  * software distributed under the License is distributed on an
- *  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  * KIND, either express or implied.  See the License for the
- *  * specific language governing permissions and limitations
- *  * under the License.
- *
- */
-
-package org.apache.tinkerpop.gremlin.process.traversal.traverser;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Step;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
-
-import java.util.EnumSet;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class B_LP_O_S_SE_SL_TraverserGenerator implements TraverserGenerator {
-
-    private static final B_LP_O_S_SE_SL_TraverserGenerator INSTANCE = new B_LP_O_S_SE_SL_TraverserGenerator();
-    private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(
-            TraverserRequirement.OBJECT,
-            TraverserRequirement.BULK,
-            TraverserRequirement.SINGLE_LOOP,
-            TraverserRequirement.LABELED_PATH,
-            TraverserRequirement.SACK,
-            TraverserRequirement.SIDE_EFFECTS);
-
-    private B_LP_O_S_SE_SL_TraverserGenerator() {
-    }
-
-    @Override
-    public <S> Traverser.Admin<S> generate(final S start, final Step<S, ?> startStep, final long initialBulk) {
-        return new B_LP_O_S_SE_SL_Traverser<>(start, startStep, initialBulk);
-    }
-
-    @Override
-    public Set<TraverserRequirement> getProvidedRequirements() {
-        return REQUIREMENTS;
-    }
-
-    public static B_LP_O_S_SE_SL_TraverserGenerator instance() {
-        return INSTANCE;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_P_S_SE_SL_Traverser.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_P_S_SE_SL_Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_P_S_SE_SL_Traverser.java
new file mode 100644
index 0000000..7b77843
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_P_S_SE_SL_Traverser.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.traverser;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ImmutablePath;
+import org.apache.tinkerpop.gremlin.structure.util.Attachable;
+import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
+import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory;
+
+import java.util.function.Function;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class B_O_P_S_SE_SL_Traverser<T> extends B_O_S_SE_SL_Traverser<T> {
+
+    protected Path path;
+
+    protected B_O_P_S_SE_SL_Traverser() {
+    }
+
+    public B_O_P_S_SE_SL_Traverser(final T t, final Step<T, ?> step, final long initialBulk) {
+        super(t, step, initialBulk);
+        this.path = ImmutablePath.make().extend(t, step.getLabels());
+    }
+
+    /////////////////
+
+    @Override
+    public Path path() {
+        return this.path;
+    }
+
+    /////////////////
+
+    @Override
+    public Traverser.Admin<T> detach() {
+        super.detach();
+        this.path = ReferenceFactory.detach(this.path);
+        return this;
+    }
+
+    @Override
+    public T attach(final Function<Attachable<T>, T> method) {
+        // you do not want to attach a path because it will reference graph objects not at the current vertex
+        if (this.t instanceof Attachable && !(((Attachable) this.t).get() instanceof Path))
+            this.t = ((Attachable<T>) this.t).attach(method);
+        return this.t;
+    }
+
+    /////////////////
+
+    @Override
+    public void merge(final Traverser.Admin<?> other) {
+        this.bulk = this.bulk + other.bulk();
+    }
+
+    @Override
+    public <R> Traverser.Admin<R> split(final R r, final Step<T, R> step) {
+        final B_O_P_S_SE_SL_Traverser<R> clone = (B_O_P_S_SE_SL_Traverser<R>) super.split(r, step);
+        clone.path = clone.path.clone().extend(r, step.getLabels());
+        return clone;
+
+    }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() + this.path.hashCode();
+    }
+
+    @Override
+    public boolean equals(final Object object) {
+        return (object instanceof B_O_P_S_SE_SL_Traverser)
+                && ((B_O_P_S_SE_SL_Traverser) object).path().equals(this.path)
+                && ((B_O_P_S_SE_SL_Traverser) object).get().equals(this.t)
+                && ((B_O_P_S_SE_SL_Traverser) object).getStepId().equals(this.getStepId())
+                && ((B_O_P_S_SE_SL_Traverser) object).loops() == this.loops()
+                && (null == this.sack);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_P_S_SE_SL_TraverserGenerator.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_P_S_SE_SL_TraverserGenerator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_P_S_SE_SL_TraverserGenerator.java
new file mode 100644
index 0000000..9915740
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/B_O_P_S_SE_SL_TraverserGenerator.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.traverser;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
+
+import java.util.EnumSet;
+import java.util.Set;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public class B_O_P_S_SE_SL_TraverserGenerator implements TraverserGenerator {
+
+    private static final B_O_P_S_SE_SL_TraverserGenerator INSTANCE = new B_O_P_S_SE_SL_TraverserGenerator();
+    private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(
+            TraverserRequirement.OBJECT,
+            TraverserRequirement.BULK,
+            TraverserRequirement.SINGLE_LOOP,
+            TraverserRequirement.PATH,
+            TraverserRequirement.SACK,
+            TraverserRequirement.SIDE_EFFECTS);
+
+    private B_O_P_S_SE_SL_TraverserGenerator() {
+    }
+
+    @Override
+    public <S> Traverser.Admin<S> generate(final S start, final Step<S, ?> startStep, final long initialBulk) {
+        return new B_O_P_S_SE_SL_Traverser<>(start, startStep, initialBulk);
+    }
+
+    @Override
+    public Set<TraverserRequirement> getProvidedRequirements() {
+        return REQUIREMENTS;
+    }
+
+    public static B_O_P_S_SE_SL_TraverserGenerator instance() {
+        return INSTANCE;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java
index b81469b..8d6c7c8 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/TraverserRequirement.java
@@ -35,7 +35,6 @@ public enum TraverserRequirement {
     BULK,
     SINGLE_LOOP,
     NESTED_LOOP,
-    LABELED_PATH,
     PATH,
     SACK,
     SIDE_EFFECTS,

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/AbstractTraverser.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/AbstractTraverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/AbstractTraverser.java
index 1ced9ef..3284394 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/AbstractTraverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/AbstractTraverser.java
@@ -27,7 +27,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.EmptyTraversalSideEff
 import org.apache.tinkerpop.gremlin.structure.util.Attachable;
 import org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceFactory;
 
-import java.util.Set;
 import java.util.function.Function;
 
 /**
@@ -73,11 +72,6 @@ public abstract class AbstractTraverser<T> implements Traverser<T>, Traverser.Ad
     }
 
     @Override
-    public void addLabels(final Set<String> labels) {
-
-    }
-
-    @Override
     public void set(final T t) {
         this.t = t;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactory.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactory.java
index d94e531..f473cbb 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/DefaultTraverserGeneratorFactory.java
@@ -20,9 +20,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.traverser.util;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_P_S_SE_SL_TraverserGenerator;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_S_SE_SL_TraverserGenerator;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_S_SE_SL_TraverserGenerator;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_P_S_SE_SL_TraverserGenerator;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_TraverserGenerator;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.O_TraverserGenerator;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserGeneratorFactory;
@@ -45,7 +44,7 @@ public class DefaultTraverserGeneratorFactory implements TraverserGeneratorFacto
     }
 
     @Override
-    public TraverserGenerator getTraverserGenerator(final Traversal.Admin<?, ?> traversal) {
+    public TraverserGenerator getTraverserGenerator(final Traversal.Admin<?,?> traversal) {
         final Set<TraverserRequirement> requirements = traversal.getTraverserRequirements();
 
         if (O_TraverserGenerator.instance().getProvidedRequirements().containsAll(requirements))
@@ -57,11 +56,8 @@ public class DefaultTraverserGeneratorFactory implements TraverserGeneratorFacto
         if (B_O_S_SE_SL_TraverserGenerator.instance().getProvidedRequirements().containsAll(requirements))
             return B_O_S_SE_SL_TraverserGenerator.instance();
 
-        if (B_LP_O_S_SE_SL_TraverserGenerator.instance().getProvidedRequirements().containsAll(requirements))
-            return B_LP_O_S_SE_SL_TraverserGenerator.instance();
-
-        if (B_LP_O_P_S_SE_SL_TraverserGenerator.instance().getProvidedRequirements().containsAll(requirements))
-            return B_LP_O_P_S_SE_SL_TraverserGenerator.instance();
+        if (B_O_P_S_SE_SL_TraverserGenerator.instance().getProvidedRequirements().containsAll(requirements))
+            return B_O_P_S_SE_SL_TraverserGenerator.instance();
 
         throw new IllegalStateException("The provided traverser generator factory does not support the requirements of the traversal: " + this.getClass().getCanonicalName() + requirements);
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/EmptyTraverser.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/EmptyTraverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/EmptyTraverser.java
index a099505..11d19bc 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/EmptyTraverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/traverser/util/EmptyTraverser.java
@@ -25,7 +25,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyPath;
 import org.apache.tinkerpop.gremlin.structure.util.Attachable;
 
-import java.util.Set;
 import java.util.function.Function;
 
 /**
@@ -44,11 +43,6 @@ public final class EmptyTraverser<T> implements Traverser<T>, Traverser.Admin<T>
     }
 
     @Override
-    public void addLabels(final Set<String> labels) {
-
-    }
-
-    @Override
     public void set(final T t) {
 
     }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
index 5e025b1..eb2444c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/TraversalHelper.java
@@ -38,8 +38,13 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
-import java.util.*;
-import java.util.function.Predicate;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -211,22 +216,6 @@ public final class TraversalHelper {
         return false;
     }
 
-    public static boolean anyStepRecursively(final Predicate<Step> predicate, final Traversal.Admin<?, ?> traversal) {
-        for (final Step<?, ?> step : traversal.getSteps()) {
-            if (predicate.test(step)) {
-                return true;
-            }
-            if (step instanceof TraversalParent) {
-                for (final Traversal.Admin<?, ?> globalChild : ((TraversalParent) step).getGlobalChildren()) {
-                    if (anyStepRecursively(predicate, globalChild)) {
-                        return true;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
     /**
      * @param stepClasses the step classes to look for
      * @param traversal   the traversal in which to look for the given step classes

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Transaction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Transaction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Transaction.java
index 03bd8cc..56b22e0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Transaction.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Transaction.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.structure;
 
 import org.apache.tinkerpop.gremlin.structure.util.AbstractTransaction;
 
+import java.io.Closeable;
 import java.util.Collections;
 import java.util.Set;
 import java.util.function.BiFunction;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLReader.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLReader.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLReader.java
index d45d411..d2fdb39 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLReader.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLReader.java
@@ -61,13 +61,12 @@ public final class GraphMLReader implements GraphReader {
     private final String edgeLabelKey;
     private final String vertexLabelKey;
     private final long batchSize;
-    private final boolean strict;
 
-    private GraphMLReader(final Builder builder) {
-        this.edgeLabelKey = builder.edgeLabelKey;
-        this.batchSize = builder.batchSize;
-        this.vertexLabelKey = builder.vertexLabelKey;
-        this.strict = builder.strict;
+    private GraphMLReader(final String edgeLabelKey, final String vertexLabelKey,
+                          final long batchSize) {
+        this.edgeLabelKey = edgeLabelKey;
+        this.batchSize = batchSize;
+        this.vertexLabelKey = vertexLabelKey;
     }
 
     @Override
@@ -144,23 +143,13 @@ public final class GraphMLReader implements GraphReader {
                                 if (isInVertex) {
                                     if (key.equals(vertexLabelKey))
                                         vertexLabel = value;
-                                    else {
-                                        try {
-                                            vertexProps.put(dataAttributeName, typeCastValue(key, value, keyTypesMaps));
-                                        } catch (NumberFormatException nfe) {
-                                            if (strict) throw nfe;
-                                        }
-                                    }
+                                    else
+                                        vertexProps.put(dataAttributeName, typeCastValue(key, value, keyTypesMaps));
                                 } else if (isInEdge) {
                                     if (key.equals(edgeLabelKey))
                                         edgeLabel = value;
-                                    else {
-                                        try {
-                                            edgeProps.put(dataAttributeName, typeCastValue(key, value, keyTypesMaps));
-                                        } catch (NumberFormatException nfe) {
-                                            if (strict) throw nfe;
-                                        }
-                                    }
+                                    else
+                                        edgeProps.put(dataAttributeName, typeCastValue(key, value, keyTypesMaps));
                                 }
                             }
 
@@ -340,19 +329,9 @@ public final class GraphMLReader implements GraphReader {
     public static final class Builder implements ReaderBuilder<GraphMLReader> {
         private String edgeLabelKey = GraphMLTokens.LABEL_E;
         private String vertexLabelKey = GraphMLTokens.LABEL_V;
-        private boolean strict = true;
         private long batchSize = 10000;
 
-        private Builder() { }
-
-        /**
-         * When set to true, exceptions will be thrown if a property value cannot be coerced to the expected data
-         * type. If set to false, then the reader will continue with the import but ignore the failed property key.
-         * By default this value is "true".
-         */
-        public Builder strict(final boolean strict) {
-            this.strict = strict;
-            return this;
+        private Builder() {
         }
 
         /**
@@ -380,7 +359,7 @@ public final class GraphMLReader implements GraphReader {
         }
 
         public GraphMLReader create() {
-            return new GraphMLReader(this);
+            return new GraphMLReader(edgeLabelKey, vertexLabelKey, batchSize);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java
index b77f3ec..8b96052 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoMapper.java
@@ -20,12 +20,10 @@ package org.apache.tinkerpop.gremlin.structure.io.gryo;
 
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.util.MapMemory;
-import org.apache.tinkerpop.gremlin.process.traversal.Contains;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_P_S_SE_SL_Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_S_SE_SL_Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_P_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.O_Traverser;
@@ -33,6 +31,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSe
 import org.apache.tinkerpop.gremlin.process.traversal.util.DependantMutableMetrics;
 import org.apache.tinkerpop.gremlin.process.traversal.util.MutableMetrics;
 import org.apache.tinkerpop.gremlin.process.traversal.util.StandardTraversalMetrics;
+import org.apache.tinkerpop.gremlin.process.traversal.Contains;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
@@ -97,12 +96,12 @@ import java.util.stream.Collectors;
  * serializers in one of three ways:
  * <p/>
  * <ol>
- * <li>Register just the custom class with a {@code null} {@link Serializer} implementation</li>
- * <li>Register the custom class with a {@link Serializer} implementation</li>
- * <li>
- * Register the custom class with a {@code Function<Kryo, Serializer>} for those cases where the
- * {@link Serializer} requires the {@link Kryo} instance to get constructed.
- * </li>
+ *     <li>Register just the custom class with a {@code null} {@link Serializer} implementation</li>
+ *     <li>Register the custom class with a {@link Serializer} implementation</li>
+ *     <li>
+ *         Register the custom class with a {@code Function<Kryo, Serializer>} for those cases where the
+ *         {@link Serializer} requires the {@link Kryo} instance to get constructed.
+ *     </li>
  * </ol>
  * <p/>
  * For example:
@@ -224,7 +223,7 @@ public final class GryoMapper implements Mapper<Kryo> {
             add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(ReferenceVertex.class, null, 84));
             add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(ReferencePath.class, null, 85));
 
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(StarGraph.class, kryo -> StarGraphGryoSerializer.with(Direction.BOTH), 86));
+            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(StarGraph.class, kryo -> StarGraphGryoSerializer.with(Direction.BOTH), 86)); // ***LAST ID**
 
             add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Edge.class, kryo -> new GryoSerializers.EdgeSerializer(), 65));
             add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Vertex.class, kryo -> new GryoSerializers.VertexSerializer(), 66));
@@ -234,9 +233,8 @@ public final class GryoMapper implements Mapper<Kryo> {
             // skip 55
             add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(B_O_Traverser.class, null, 75));
             add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(O_Traverser.class, null, 76));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(B_LP_O_P_S_SE_SL_Traverser.class, null, 77));
+            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(B_O_P_S_SE_SL_Traverser.class, null, 77));
             add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(B_O_S_SE_SL_Traverser.class, null, 78));
-            add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(B_LP_O_S_SE_SL_Traverser.class, null, 87));  // ***LAST ID**
 
             add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(TraverserSet.class, null, 58));
             add(Triplet.<Class, Function<Kryo, Serializer>, Integer>with(Tree.class, null, 61));

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadLocalTransaction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadLocalTransaction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadLocalTransaction.java
deleted file mode 100644
index b47eb79..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadLocalTransaction.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.structure.util;
-
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Transaction;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.Consumer;
-
-/**
- * A base implementation of {@link Transaction} that provides core functionality for transaction listeners using
- * {@link ThreadLocal}.  In this implementation, the listeners are bound to the current thread of execution (usually
- * the same as the transaction for most graph database implementations).  Therefore, when {@link #commit()} is
- * called on a particular thread, the only listeners that get notified are those bound to that thread.
- *
- * @see AbstractThreadedTransaction
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public abstract class AbstractThreadLocalTransaction extends AbstractTransaction {
-
-    protected final ThreadLocal<List<Consumer<Transaction.Status>>> transactionListeners = new ThreadLocal<List<Consumer<Transaction.Status>>>() {
-        @Override
-        protected List<Consumer<Transaction.Status>> initialValue() {
-            return new ArrayList<>();
-        }
-    };
-
-    public AbstractThreadLocalTransaction(final Graph g) {
-        super(g);
-    }
-
-    @Override
-    protected void fireOnCommit() {
-        transactionListeners.get().forEach(c -> c.accept(Status.COMMIT));
-    }
-
-    @Override
-    protected void fireOnRollback() {
-        transactionListeners.get().forEach(c -> c.accept(Status.ROLLBACK));
-    }
-
-    @Override
-    public void addTransactionListener(final Consumer<Status> listener) {
-        transactionListeners.get().add(listener);
-    }
-
-    @Override
-    public void removeTransactionListener(final Consumer<Status> listener) {
-        transactionListeners.get().remove(listener);
-    }
-
-    @Override
-    public void clearTransactionListeners() {
-        transactionListeners.get().clear();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadedTransaction.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadedTransaction.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadedTransaction.java
deleted file mode 100644
index 57f8ec0..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/AbstractThreadedTransaction.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.structure.util;
-
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.structure.Transaction;
-
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.function.Consumer;
-
-/**
- * A base implementation of {@link Transaction} that provides core functionality for transaction listeners using a
- * shared set of transaction listeners.  Therefore, when {@link #commit()} is called from any thread, all listeners
- * get notified.  This implementation would be useful for graph implementations that support threaded transactions,
- * specifically in the {@link Graph} instance returned from {@link Transaction#createThreadedTx()}.
- *
- * @see AbstractThreadLocalTransaction
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public abstract class AbstractThreadedTransaction extends AbstractTransaction {
-
-    protected final List<Consumer<Status>> transactionListeners = new CopyOnWriteArrayList<>();
-
-    public AbstractThreadedTransaction(final Graph g) {
-        super(g);
-    }
-
-    @Override
-    protected void fireOnCommit() {
-        transactionListeners.forEach(c -> c.accept(Status.COMMIT));
-    }
-
-    @Override
-    protected void fireOnRollback() {
-        transactionListeners.forEach(c -> c.accept(Status.ROLLBACK));
-    }
-
-    @Override
-    public void addTransactionListener(final Consumer<Status> listener) {
-        transactionListeners.add(listener);
-    }
-
-    @Override
-    public void removeTransactionListener(final Consumer<Status> listener) {
-        transactionListeners.remove(listener);
-    }
-
-    @Override
-    public void clearTransactionListeners() {
-        transactionListeners.clear();
-    }
-}


[6/6] incubator-tinkerpop git commit: Revert "Merge remote-tracking branch 'origin' into tp30"

Posted by sp...@apache.org.
Revert "Merge remote-tracking branch 'origin' into tp30"

This reverts commit e21f283e02d0bfe6678e479d562d70df8fb28ca4, reversing
changes made to 25063bb61ef2849749d0a8be287687ce7b3794be.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/6902e68a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/6902e68a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/6902e68a

Branch: refs/heads/tp30
Commit: 6902e68a0a334e44ce881ca0917b9b4d08f344f4
Parents: e21f283
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Aug 25 08:52:12 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Aug 25 08:52:12 2015 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   28 +-
 README.asciidoc                                 |    2 +-
 docs/src/gremlin-applications.asciidoc          |   50 +-
 docs/static/images/gremlin-gangster.png         |  Bin 142316 -> 0 bytes
 docs/static/images/tinkerpop3.graffle           | 2023 +-----------------
 gremlin-console/conf/remote-objects.yaml        |   23 +-
 gremlin-console/conf/remote-secure.yaml         |    9 -
 gremlin-console/conf/remote.yaml                |   12 -
 gremlin-console/pom.xml                         |    2 +-
 .../console/plugin/GephiRemoteAcceptor.groovy   |  320 +--
 .../GephiTraversalVisualizationStrategy.groovy  |  127 --
 .../plugin/UtilitiesGremlinPluginScript.groovy  |    2 +-
 .../GephiRemoteAcceptorIntegrateTest.java       |  105 +-
 gremlin-core/pom.xml                            |    2 +-
 .../gremlin/process/traversal/Path.java         |   35 +-
 .../process/traversal/TraversalStrategies.java  |    4 +-
 .../gremlin/process/traversal/Traverser.java    |    3 -
 .../traversal/dsl/graph/GraphTraversal.java     |  147 +-
 .../gremlin/process/traversal/dsl/graph/__.java |   27 +-
 .../process/traversal/lambda/LoopTraversal.java |   33 +-
 .../gremlin/process/traversal/step/Scoping.java |    4 +-
 .../traversal/step/branch/BranchStep.java       |    2 -
 .../traversal/step/branch/RepeatStep.java       |    9 +-
 .../traversal/step/filter/DedupGlobalStep.java  |    2 +-
 .../step/filter/WherePredicateStep.java         |   13 +-
 .../process/traversal/step/map/LoopsStep.java   |   37 -
 .../process/traversal/step/map/MapKeysStep.java |   14 +-
 .../traversal/step/map/MapValuesStep.java       |   14 +-
 .../process/traversal/step/map/MatchStep.java   |   23 +-
 .../traversal/step/map/RangeLocalStep.java      |   18 +-
 .../traversal/step/map/TailLocalStep.java       |    6 +-
 .../traversal/step/sideEffect/GraphStep.java    |   12 +-
 .../traversal/step/util/AbstractStep.java       |   16 +-
 .../traversal/step/util/ComputerAwareStep.java  |   12 +-
 .../process/traversal/step/util/EmptyPath.java  |   10 +-
 .../traversal/step/util/ImmutablePath.java      |   70 +-
 .../traversal/step/util/MutablePath.java        |   46 +-
 .../optimization/DedupBijectionStrategy.java    |   90 +
 .../optimization/FilterRankingStrategy.java     |  176 --
 .../traverser/B_LP_O_P_S_SE_SL_Traverser.java   |   99 -
 .../B_LP_O_P_S_SE_SL_TraverserGenerator.java    |   59 -
 .../traverser/B_LP_O_S_SE_SL_Traverser.java     |  106 -
 .../B_LP_O_S_SE_SL_TraverserGenerator.java      |   61 -
 .../traverser/B_O_P_S_SE_SL_Traverser.java      |  100 +
 .../B_O_P_S_SE_SL_TraverserGenerator.java       |   58 +
 .../traverser/TraverserRequirement.java         |    1 -
 .../traverser/util/AbstractTraverser.java       |    6 -
 .../util/DefaultTraverserGeneratorFactory.java  |   12 +-
 .../traverser/util/EmptyTraverser.java          |    6 -
 .../process/traversal/util/TraversalHelper.java |   25 +-
 .../gremlin/structure/Transaction.java          |    1 +
 .../structure/io/graphml/GraphMLReader.java     |   43 +-
 .../gremlin/structure/io/gryo/GryoMapper.java   |   22 +-
 .../util/AbstractThreadLocalTransaction.java    |   75 -
 .../util/AbstractThreadedTransaction.java       |   70 -
 .../structure/util/AbstractTransaction.java     |   83 +-
 .../gremlin/process/traversal/PathTest.java     |   85 +-
 .../traversal/step/filter/WhereStepTest.java    |    2 +-
 .../traversal/step/map/LoopsStepTest.java       |   40 -
 .../traversal/step/map/SelectOneStepTest.java   |    2 +-
 .../traversal/step/map/SelectStepTest.java      |    2 +-
 .../DedupBijectionStrategyTest.java             |  128 ++
 .../optimization/FilterRankingStrategyTest.java |  133 --
 .../LambdaRestrictionStrategyTest.java          |    3 +
 gremlin-driver/pom.xml                          |    2 +-
 gremlin-groovy-test/pom.xml                     |    2 +-
 .../step/branch/GroovyRepeatTest.groovy         |    7 +-
 .../traversal/step/map/GroovyCountTest.groovy   |   11 +-
 .../traversal/step/map/GroovyLoopsTest.groovy   |   56 -
 .../traversal/step/map/GroovyMapKeysTest.groovy |    5 -
 .../step/map/GroovyMapValuesTest.groovy         |    5 -
 .../traversal/step/map/GroovyMatchTest.groovy   |    5 -
 .../traversal/step/map/GroovyUnfoldTest.groovy  |    9 +-
 .../traversal/step/map/GroovyVertexTest.groovy  |   12 +-
 .../step/sideEffect/GroovyProfileTest.groovy    |    2 +-
 .../process/GroovyProcessComputerSuite.java     |    1 -
 .../process/GroovyProcessStandardSuite.java     |    1 -
 gremlin-groovy/pom.xml                          |    2 +-
 .../gremlin/groovy/engine/GremlinExecutor.java  |   32 +-
 .../groovy/engine/GremlinExecutorTest.java      |   11 +-
 .../groovy/engine/GremlinExecutorInit.groovy    |    3 +-
 gremlin-server/conf/gremlin-server-classic.yaml |    2 +-
 .../conf/gremlin-server-modern-readonly.yaml    |    2 +-
 gremlin-server/conf/gremlin-server-modern.yaml  |    2 +-
 gremlin-server/conf/gremlin-server-secure.yaml  |    2 +-
 gremlin-server/conf/gremlin-server.yaml         |    2 +-
 gremlin-server/pom.xml                          |    2 +-
 .../gremlin/server/op/session/Session.java      |    2 +
 .../server/util/ServerGremlinExecutor.java      |    4 +
 .../server/GremlinDriverIntegrateTest.java      |    2 +-
 .../server/GremlinResultSetIntegrateTest.java   |    2 +-
 .../server/gremlin-server-integration.yaml      |    2 +-
 .../server/gremlin-server-performance.yaml      |    2 +-
 gremlin-shaded/pom.xml                          |    2 +-
 gremlin-test/pom.xml                            |    2 +-
 .../tinkerpop/gremlin/AbstractGremlinTest.java  |   38 +-
 .../apache/tinkerpop/gremlin/GraphProvider.java |   10 +-
 .../gremlin/process/ProcessComputerSuite.java   |   23 +-
 .../gremlin/process/ProcessStandardSuite.java   |    2 -
 .../traversal/step/branch/RepeatTest.java       |   28 +-
 .../process/traversal/step/map/CountTest.java   |   17 -
 .../process/traversal/step/map/LoopsTest.java   |  152 --
 .../process/traversal/step/map/MapKeysTest.java |   18 +-
 .../traversal/step/map/MapValuesTest.java       |   18 +-
 .../process/traversal/step/map/MatchTest.java   |   31 +-
 .../process/traversal/step/map/UnfoldTest.java  |   24 +-
 .../process/traversal/step/map/VertexTest.java  |   29 +-
 .../traversal/step/sideEffect/ProfileTest.java  |    6 +-
 .../gremlin/structure/TransactionTest.java      |   13 +-
 .../tinkerpop/gremlin/structure/io/IoTest.java  |   46 +-
 .../structure/io/graphml/graph-types-bad.xml    |   42 -
 hadoop-gremlin/pom.xml                          |    2 +-
 .../gremlin/hadoop/structure/HadoopGraph.java   |    8 -
 neo4j-gremlin/pom.xml                           |    2 +-
 .../step/sideEffect/Neo4jGraphStep.java         |    2 +-
 .../gremlin/neo4j/structure/Neo4jGraph.java     |    8 +-
 pom.xml                                         |    2 +-
 tinkergraph-gremlin/pom.xml                     |    2 +-
 .../step/sideEffect/TinkerGraphStep.java        |    2 +-
 .../tinkergraph/structure/TinkerGraph.java      |    6 -
 .../tinkergraph/structure/TinkerIoRegistry.java |   88 -
 .../tinkergraph/structure/TinkerGraphTest.java  |   44 +-
 122 files changed, 1108 insertions(+), 4501 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index be25cf3..ec39683 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -17,38 +17,14 @@ limitations under the License.
 TinkerPop3 CHANGELOG
 =====================
 
-
-TinkerPop 3.1.0 (A 187 On The Undercover Gremlinz)
---------------------------------------------------
-
-image::https://raw.githubusercontent.com/apache/incubator-tinkerpop/master/docs/static/images/gremlin-gangster.png[width=185]
-
-TinkerPop 3.1.0 (NOT OFFICIALLY RELEASED YET)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-* `GraphStep` can now take a single argument `Collection` which is either elements or element ids (i.e. `g.V([1,2,3])` is supported now).
-* Added `LoopsStep` to make the loop counter accessible within `repeat()`, `until()` and `emit()`.
-* Gephi Plugin no longer requires manual insert of `store` steps to visualize a traversal.
-* Gephi Plugin visualizes `Path` objects.
-* Added a `TinkerIoRegistry` that registers a custom serializer for Gryo that will serialize an entire `TinkerGraph` instance.
-* Added configuration options to Gephi Plugin for setting the size of nodes visualized.
-* Replaced `DedupBijectionStrategy` with the more effective `FilterRankingStrategy`.
-* `ComputerAwareSteps` must not only handle step ids, but also step labels.
-* Renamed `B_O_P_SE_SL_Traverser` to `B_LP_O_P_SE_SL_Traverser` as it now supports `TraverserRequirement.LABELED_PATH`.
-* Added `B_LP_O_S_SE_SL_Traverser` in support of `TraverserRequirement.LABELED_PATH`.
-* Added `TraverserRequirement.LABELED_PATH` which only generates path data for steps that are labeled (greatly increases the likelihood of bulking).
-* Fixed a bug in `Path` usage that required an API update: `Path.addLabel()` is now `Path.extend(Set<String>)` and `Traverser.addLabels(Set<String>)`.
-* Made `Path` iterable, so that it can be `unfold()`'ed and used by local steps like `min(local)`, `max(local)`, etc.
-
 TinkerPop 3.0.0 (A Gremlin Rāga in 7/16 Time)
 ---------------------------------------------
 
-image::https://raw.githubusercontent.com/apache/incubator-tinkerpop/master/docs/static/images/gremlin-hindu.png[width=225]
+image::http://www.tinkerpop.com/docs/current/images/gremlin-hindu.png[width=225]
 
 TinkerPop 3.0.1 (NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-* `WhereTraversalStep` and `WherePredicateStep` are now the only "special" `Scoping` steps after `MatchStartStep` in `match()`.
 * Clarified semantics of `Transaction.close()` in unit tests - now refers only to closing the current transaction in the current thread.
 * `Neo4jGraph` no longer uses `OptOut` on `TransactionTest.shouldRollbackOnCloseWhenConfigured` (formerly `shouldRollbackOnShutdownWhenConfigured`)
 * Gremlin Server initialization scripts can now return a `Map` of values that will become global bindings for the server.
@@ -743,4 +719,4 @@ TinkerPop 3.0.0.M2 (Release Date: September 23, 2014)
 TinkerPop 3.0.0.M1 (Release Date: August 12, 2014)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-* First official release of TinkerPop3 and thus, no changes.
+* First official release of TinkerPop3 and thus, no changes.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/README.asciidoc
----------------------------------------------------------------------
diff --git a/README.asciidoc b/README.asciidoc
index 5a403ad..934d5af 100644
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -63,4 +63,4 @@ gremlin> g = graph.traversal()
 ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
 gremlin> g.V().has('name','vadas').valueMap()
 ==>[name:[vadas], age:[27]]
-----
\ No newline at end of file
+----

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/docs/src/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/gremlin-applications.asciidoc b/docs/src/gremlin-applications.asciidoc
index db2ce9a..cf63054 100644
--- a/docs/src/gremlin-applications.asciidoc
+++ b/docs/src/gremlin-applications.asciidoc
@@ -293,6 +293,8 @@ include::{basedir}/gremlin-server/scripts/generate-modern.groovy[]
 
 The script above initializes a `Map` and assigns two key/values to it.  The first, assigned to "hook", defines a `LifeCycleHook` for Gremlin Server.  The "hook" provides a way to tie script code into the Gremlin Server startup and shutdown sequences.  The `LifeCycleHook` has two methods that can be implemented: `onStartUp` and `onShutDown`.  These events are called once at Gremlin Server start and once at Gremlin Server stop.  This is an important point because code outside of the "hook" is executed for each `ScriptEngine` creation (multiple may be created when "sessions" are enabled) and therefore the `LifeCycleHook` provides a way to ensure that a script is only executed a single time. In this case, the startup hook loads the "modern" graph into the empty TinkerGraph instance, preparing it for use.  The second key/value pair assigned to the `Map`, named "g", defines a `TraversalSource` from the `Graph` bound to the "graph" variable in the YAML configuration file.  This variable `g
 `, as well as any other variable assigned to the `Map`, will be made available as variables for future remote script executions.  In more general terms, any key/value pairs assigned to a `Map` returned from the init script will become variables that are global to all requests. In addition, any functions that are defined will be cached for future use.
 
+IMPORTANT: The approach to global bindings described above was introduced with 3.0.1.  In 3.0.0, initialization scripts that simply created `Graph` and/or `TraversalSource` objects became globally bound to the server and it was not possible to bind variables of other types. This less flexible feature is expected to be removed from Gremlin Server in 3.1.0 but remains present in the 3.0.x line of releases for backward compatibility with existing scripts.
+
 With Gremlin Server running it is now possible to issue some scripts to it for processing.  Start Gremlin Console as follows:
 
 [source,text]
@@ -349,8 +351,6 @@ script = """
 
 TIP: In Groovy, `""" text """` is a convenient way to create a multi-line string and works well in concert with `:> @variable`. Note that this model of submitting a string variable works for all `:>` based plugins, not just Gremlin Server.
 
-WARNING: Not all values that can be returned from a Gremlin script end up being serializable.  For example, submitting `:> graph` will return a `Graph` instance and in most cases those are not serializable by Gremlin Server and will return a serialization error.  It should be noted that `TinkerGraph`, as a convenience for shipping around small sub-graphs, is serializable from Gremlin Server.
-
 Connecting via Java
 ~~~~~~~~~~~~~~~~~~~
 
@@ -1130,34 +1130,41 @@ NOTE: Issuing `:> graph` again will clear the Gephi workspace and then re-write
 
 Now that the graph is visualized in Gephi, it is possible to link:https://gephi.github.io/users/tutorial-layouts/[apply a layout algorithm], change the size and/or color of vertices and edges, and display labels/properties of interest.  Further information can be found in Gephi's tutorial on link:https://gephi.github.io/users/tutorial-visualization/[Visualization].  After applying the Fruchterman Reingold layout, increasing the node size, decreasing the edge scale, and displaying the id, name, and weight attributes the graph looks as displayed in the right image above.
 
-In addition to providing a way to pipe a `Graph` instance to Gephi, the plugin also enables methods for visualizing a `Path` and a `Traversal`.  In both cases, the `Graph` underlying the `Path` and `Traversal` must be visualized in Gephi as defined above.  To visualize a `Path`, simple get a `Path` object and `:submit` it:
-
-[source,groovy]
-gremlin> :> g.V(1).repeat(both().dedup()).until(hasId(582)).path().next()
+NOTE: It's recommended to choose a continuously running layout algorithm like Fruchterman Reingold or Force Atlas, because every update to color the visited vertices causes their positions to be reset, so these layouts will constantly adjust to account for these changes and make visualization of the traversals.  This also explains why the graph seems to rotate each store step in the screenshots below.
 
-The above line of code will visualize the "shortest path" between vertex `1` and vertex `582`, highlighting vertex `1` first then stepping through the path to `582` highlighting each vertex found as it goes.
+Consider the following traversal:
 
-WARNING: On some platforms, Gephi may not properly refresh the edges in the "Overview" panel for `Path` visualizations.  If this problem occurs, manually refreshing the "Overview" will allow the `Path` visualization to become fully realized (e.g. click the "Show Hulls" button).
+[source,groovy]
+----
+g = graph.traversal()
+g.V(2).in().out('knows').
+      has('age',gt(30)).outE('created').
+      has('weight',gt(0.5d)).inV()
+----
 
-Visualization of a `Traversal` has a different approach as the visualization occurs as the `Traversal` is executing, thus showing a real-time view of its execution.  A `Traversal` must be "configured" to operate in this format and for that it requires use of the `visualTraversal` option on the `config` function of the `:remote` command:
+To visualize it insert the appropriately named `store('n')` steps where `n` is an integer, and the vertices will be highlighted in ascending store step order.
 
 [gremlin-groovy,modern]
 ----
-:remote config visualTraversal graph                   <1>
-traversal = vg.V(2).in().out('knows').
-                    has('age',gt(30)).outE('created').
-                    has('weight',gt(0.5d)).inV()
-:> traversal                                           <2>
+g = graph.traversal()
+g.V(2).in('knows').out('knows').has('age',gt(30)).
+       outE('created').has('weight',gt(0.5d)).inV().values('name')
+traversal = g.V(2).store('1').
+       in('knows').store('2').
+       out('knows').has('age',gt(30)).store('3').
+       outE('created').has('weight',gt(0.5d)).inV().store('4')
+traversal.getSideEffects().get('1')
+traversal.getSideEffects().get('2')
+traversal.getSideEffects().get('3')
+traversal.getSideEffects().get('4')
+:> traversal
 ----
 
-<1> Configure a "visual traversal" from your "graph" - this must be a `Graph` instance.
-<2> Submit the `Traversal` to visualize to Gephi.
-
-When the `:>` line is called, each step of the `Traversal` that produces or filters vertices generates events to Gephi. The events update the color and size of the vertices at that step with `startRGBColor` and `startSize` respectively. After the first step visualization, it sleeps for the configured `stepDelay` in milliseconds. On the second step, it decays the configured `colorToFade` of all the previously visited vertices in prior steps, by multiplying the current `colorToFade` value for each vertex with the `colorFadeRate`.  Setting the `colorFadeRate` value to `1.0` will prevent the color decay.  The screenshots below show how the visualization evolves over the four steps:
+When `:> traversal` is called, it iterates through the sideEffects of the traversal accessing the vertices stored at each corresponding step. It then updates the vertices' color with `startRGBColor`, which in this case is a lime-green blue: [0.0,1.0,0.5]. After the first step visualization, it sleeps for the configured `stepDelay` in milliseconds. On the second step, it decays the configured `colorToFade` of all the previously visited vertices in prior steps, by multiplying the current `colorToFade` value for each vertex with the `colorFadeRate`.  To avoid color decay on prior steps, then provide a `colorFadeRate` value of `1.0`.  The screenshots below show how the visualization evolves over the 4 steps:
 
 image::gephi-traversal.png[width=1200]
 
-To get a sense of how the visualization configuration parameters affect the output, see the example below:
+Once a traversal visualization has executed, clear the colors in Gephi by selecting the grey square icon under the magnifying glass icon on the lower left tool bar next to the graph canvas.  Run another traversal against the same graph and it will update the appropriate vertices.  To get a sense of how the visualization configuration parameters affect the output, see the example below:
 
 [gremlin-groovy,modern]
 ----
@@ -1169,7 +1176,7 @@ To get a sense of how the visualization configuration parameters affect the outp
 
 image::gephi-traversal-config.png[width=400]
 
-The visualization configuration above starts with a blue color now (most recently visited), fading the blue color (so that dark green remains on oldest visited), and fading the blue color more quickly so that the gradient from dark green to blue across steps has higher contrast. The following table provides a more detailed description of the Gephi plugin configuration parameters as accepted via the `:remote config` command:
+The visualization configuration above starts with a blue color now (most recently visited), fading the blue color (so that dark green remains on oldest visited), and fading the blue color more quickly so that the gradient from dark green to blue across steps has higher contrast. Here is a more detailed description of Gephi plugin configuration parameters, in the order accepted on the `:remote connect gephi` command, or modified via the `:remote config` command:
 
 [width="100%",cols="3,10,^2",options="header"]
 |=========================================================
@@ -1177,13 +1184,10 @@ The visualization configuration above starts with a blue color now (most recentl
 |workspace |The name of the workspace that your Graph Streaming server is started for. |workspace0
 |host |The host URL where the Graph Streaming server is configured for. |localhost
 |port |The port number of the URL that the Graph Streaming server is listening on. |8080
-|sizeDecrementRate |The rate at which the size of an element decreases on each step of the visualization. |0.33
 |stepDelay |The amount of time in milliseconds to pause between step visualizations. |1000
 |startRGBColor |A size 3 float array of RGB color values which define the starting color to update most recently visited nodes with.  |[0.0,1.0,0.5]
-|startSize |The size an element should be when it is most recently visited. |20
 |colorToFade |A single char from the set `{r,g,b,R,G,B}` determining which color to fade for vertices visited in prior steps |g
 |colorFadeRate |A float value in the range `(0.0,1.0]` which is multiplied against the current `colorToFade` value for prior vertices; a `1.0` value effectively turns off the color fading of prior step visited vertices |0.7
-|visualTraversal |Creates a `TraversalSource` variable in the Console named `vg` which can be used for visualizing traversals. This configuration option takes two parameters.  The first is required and is the name of the `Graph` instance variable that will generate the `TraversalSource`.  The second parameter is the variable name that the `TraversalSource` should have when referenced in the Console.  If left unspecified, this value defaults to `vg`.
 |=========================================================
 
 [[server-plugin]]

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/docs/static/images/gremlin-gangster.png
----------------------------------------------------------------------
diff --git a/docs/static/images/gremlin-gangster.png b/docs/static/images/gremlin-gangster.png
deleted file mode 100644
index 64181db..0000000
Binary files a/docs/static/images/gremlin-gangster.png and /dev/null differ


[4/6] incubator-tinkerpop git commit: Revert "Merge remote-tracking branch 'origin' into tp30"

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-console/conf/remote-objects.yaml
----------------------------------------------------------------------
diff --git a/gremlin-console/conf/remote-objects.yaml b/gremlin-console/conf/remote-objects.yaml
index f507f4e..78424fd 100644
--- a/gremlin-console/conf/remote-objects.yaml
+++ b/gremlin-console/conf/remote-objects.yaml
@@ -15,27 +15,6 @@
 # specific language governing permissions and limitations
 # under the License.
 
-##############################################################
-# This configuration is meant to have Gremlin Server return
-# Gryo serialized objects. The TinkerGraph IoRegistry is
-# assigned as this is the configuration defined in the
-# pre-packaged Gremlin Server configuration files.  The
-# client configuration for serializers should match server.
-# Note that the server configures this via the
-# useMapperFromGraph setting - that simply means to use
-# the registry of the current configured Graph when
-# serializing and for these the pre-packaged purpose,
-# that's TinkerGraph.
-#
-# This file will work with:
-# - gremlin-server.yaml
-# - gremlin-server-classic.yaml
-# - gremlin-server-modern.yaml
-# - gremlin-server-modern-readonly.yaml
-# - gremlin-server-secure.yaml
-##############################################################
-
 hosts: [localhost]
 port: 8182
-serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0,
-              config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }}
\ No newline at end of file
+serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-console/conf/remote-secure.yaml
----------------------------------------------------------------------
diff --git a/gremlin-console/conf/remote-secure.yaml b/gremlin-console/conf/remote-secure.yaml
index 4f8d22b..3e1deae 100644
--- a/gremlin-console/conf/remote-secure.yaml
+++ b/gremlin-console/conf/remote-secure.yaml
@@ -15,15 +15,6 @@
 # specific language governing permissions and limitations
 # under the License.
 
-##############################################################
-# This configuration is meant to have Gremlin Server return
-# text serialized objects. The server will toString()
-# results giving a view into how scripts are executing.
-#
-# This file will work with:
-# - gremlin-server-secure.yaml
-##############################################################
-
 hosts: [localhost]
 port: 8182
 username: stephen

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-console/conf/remote.yaml
----------------------------------------------------------------------
diff --git a/gremlin-console/conf/remote.yaml b/gremlin-console/conf/remote.yaml
index c181591..7b23779 100644
--- a/gremlin-console/conf/remote.yaml
+++ b/gremlin-console/conf/remote.yaml
@@ -15,18 +15,6 @@
 # specific language governing permissions and limitations
 # under the License.
 
-##############################################################
-# This configuration is meant to have Gremlin Server return
-# text serialized objects. The server will toString()
-# results giving a view into how scripts are executing.
-#
-# This file will work with:
-# - gremlin-server.yaml
-# - gremlin-server-classic.yaml
-# - gremlin-server-modern.yaml
-# - gremlin-server-modern-readonly.yaml
-##############################################################
-
 hosts: [localhost]
 port: 8182
 serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-console/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index f2a2e9d..5e3210a 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <artifactId>tinkerpop</artifactId>
         <groupId>org.apache.tinkerpop</groupId>
-        <version>3.1.0-SNAPSHOT</version>
+        <version>3.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-console</artifactId>
     <name>Apache TinkerPop :: Gremlin Console</name>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiRemoteAcceptor.groovy
----------------------------------------------------------------------
diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiRemoteAcceptor.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiRemoteAcceptor.groovy
index b8872e9..69dfcda 100644
--- a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiRemoteAcceptor.groovy
+++ b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiRemoteAcceptor.groovy
@@ -21,20 +21,15 @@ package org.apache.tinkerpop.gremlin.console.plugin
 import groovy.transform.CompileStatic
 import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteAcceptor
 import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException
-import org.apache.tinkerpop.gremlin.process.traversal.Path
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
-import org.apache.tinkerpop.gremlin.structure.Direction
 import org.apache.tinkerpop.gremlin.structure.Edge
 import org.apache.tinkerpop.gremlin.structure.Graph
 import org.apache.tinkerpop.gremlin.structure.Vertex
 import groovy.json.JsonSlurper
 import groovyx.net.http.HTTPBuilder
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils
 import org.codehaus.groovy.tools.shell.Groovysh
 import org.codehaus.groovy.tools.shell.IO
-import org.javatuples.Pair
-
-import java.util.stream.Collectors
 
 import static groovyx.net.http.ContentType.JSON
 
@@ -51,15 +46,11 @@ class GephiRemoteAcceptor implements RemoteAcceptor {
     private final Groovysh shell
     private final IO io
 
-    boolean traversalSubmittedForViz = false
-    long vizStepDelay
+    private long vizStepDelay
     private float[] vizStartRGBColor
-    private float[] vizDefaultRGBColor
     private char vizColorToFade
     private float vizColorFadeRate
-    private float vizStartSize
-    private float vizSizeDecrementRate
-    private Map vertexAttributes = [:]
+    private Map<String, Float> fadingVertexColors;
 
     public GephiRemoteAcceptor(final Groovysh shell, final IO io) {
         this.shell = shell
@@ -68,11 +59,8 @@ class GephiRemoteAcceptor implements RemoteAcceptor {
         // traversal visualization defaults
         vizStepDelay = 1000;                 // 1 second pause between viz of steps
         vizStartRGBColor = [0.0f, 1.0f, 0.5f]  // light aqua green
-        vizDefaultRGBColor = [0.6f, 0.6f, 0.6f]  // light grey
         vizColorToFade = 'g'                 // will fade so blue is strongest
         vizColorFadeRate = 0.7               // the multiplicative rate to fade visited vertices
-        vizStartSize = 20
-        vizSizeDecrementRate = 0.33f
     }
 
     @Override
@@ -91,17 +79,25 @@ class GephiRemoteAcceptor implements RemoteAcceptor {
             }
         }
 
-        def vizConfig = " with stepDelay:$vizStepDelay, startRGBColor:$vizStartRGBColor, " +
-                "colorToFade:$vizColorToFade, colorFadeRate:$vizColorFadeRate, startSize:$vizStartSize," +
-                "sizeDecrementRate:$vizSizeDecrementRate"
+        String vizConfig = " with stepDelay:$vizStepDelay, startRGBColor:$vizStartRGBColor, " +
+                "colorToFade:$vizColorToFade, colorFadeRate:$vizColorFadeRate"
+        if (args.size() >= 4) {
+            if (args.size() > 7) {
+                vizConfig = configVizOptions(args.subList(3, 6))
+            } else {
+                vizConfig = configVizOptions(args.subList(3, args.size()))
+            }
+        }
 
         return "Connection to Gephi - http://$host:$port/$workspace" + vizConfig
     }
 
     @Override
     Object configure(final List<String> args) throws RemoteException {
-        if (args.size() < 2)
-            throw new RemoteException("Invalid config arguments - check syntax")
+        if (args.size() != 2)
+            throw new RemoteException("Expects [host <hostname>|port <port number>|workspace <name>|" +
+                    "stepDelay <milliseconds>|startRGBColor <RGB array of floats>|" +
+                    "colorToFade: <char r|g|b>]|colorFadeRate: <float>")
 
         if (args[0] == "host")
             host = args[1]
@@ -121,25 +117,67 @@ class GephiRemoteAcceptor implements RemoteAcceptor {
             parseVizColorToFade(args[1])
         else if (args[0] == "colorFadeRate")
             parseVizColorFadeRate(args[1])
-        else if (args[0] == "sizeDecrementRate")
-            parseVizSizeDecrementRate(args[1])
-        else if (args[0] == "startSize")
-            parseVizStartSize(args[1])
-        else if (args[0] == "visualTraversal") {
-            def graphVar = shell.interp.context.getVariable(args[1])
-            if (!(graphVar instanceof Graph))
-                throw new RemoteException("Invalid argument to 'visualTraversal' - first parameter must be a Graph instance")
-
-            def gVar = args.size() == 3 ? args[2] : "vg"
-            def theG = GraphTraversalSource.build().with(new GephiTraversalVisualizationStrategy(this)).create(graphVar)
-            shell.interp.context.setVariable(gVar, theG)
-        } else
-            throw new RemoteException("Invalid config arguments - check syntax")
+        else
+            throw new RemoteException("Expects [host <hostname>|port <port number>|workspace <name>|" +
+                    "stepDelay <milliseconds>|startRGBColor <RGB array of floats>|" +
+                    "colorToFade: <char r|g|b>]|colorFadeRate: <float>")
 
         return "Connection to Gephi - http://$host:$port/$workspace" +
                 " with stepDelay:$vizStepDelay, startRGBColor:$vizStartRGBColor, " +
-                "colorToFade:$vizColorToFade, colorFadeRate:$vizColorFadeRate, startSize:$vizStartSize," +
-                "sizeDecrementRate:$vizSizeDecrementRate"
+                "colorToFade:$vizColorToFade, colorFadeRate:$vizColorFadeRate"
+    }
+
+
+    private Object configVizOptions(final List<String> vizConfigArgs) {
+        if (vizConfigArgs.size() >= 1)
+            parseVizStepDelay(vizConfigArgs[0])
+
+        if (vizConfigArgs.size() >= 2)
+            parseVizStartRGBColor(vizConfigArgs[1])
+
+        if (vizConfigArgs.size() >= 3)
+            parseVizColorToFade(vizConfigArgs[2])
+
+        if (vizConfigArgs.size() >= 4)
+            parseVizColorFadeRate(vizConfigArgs[3])
+
+
+        return " with stepDelay:$vizStepDelay, startRGBColor:$vizStartRGBColor, " +
+                "colorToFade:$vizColorToFade, colorFadeRate:$vizColorFadeRate"
+    }
+
+    private void parseVizStepDelay(String arg) {
+        try {
+            vizStepDelay = Long.parseLong(arg)
+        } catch (Exception ignored) {
+            throw new RemoteException("The stepDelay must be a long value")
+        }
+    }
+
+    private void parseVizStartRGBColor(String arg) {
+        try {
+            vizStartRGBColor = arg[1..-2].tokenize(',')*.toFloat()
+            assert (vizStartRGBColor.length == 3)
+        } catch (Exception ignored) {
+            throw new RemoteException("The vizStartRGBColor must be an array of 3 float values, e.g. [0.0,1.0,0.5]")
+        }
+    }
+
+    private void parseVizColorToFade(String arg) {
+        try {
+            vizColorToFade = arg.charAt(0).toLowerCase();
+            assert (vizColorToFade == 'r' || vizColorToFade == 'g' || vizColorToFade == 'b')
+        } catch (Exception ignored) {
+            throw new RemoteException("The vizColorToFade must be one character value among: r, g, b, R, G, B")
+        }
+    }
+
+    private void parseVizColorFadeRate(String arg) {
+        try {
+            vizColorFadeRate = Float.parseFloat(arg)
+        } catch (Exception ignored) {
+            throw new RemoteException("The colorFadeRate must be a float value")
+        }
     }
 
     @Override
@@ -152,70 +190,36 @@ class GephiRemoteAcceptor implements RemoteAcceptor {
             return
         }
 
-        // need to clear the vertex attributes
-        vertexAttributes.clear()
-
-        // this tells the GraphTraversalVisualizationStrategy that if the line eval's to a traversal it should
-        // try to visualize it
-        traversalSubmittedForViz = true
-
-        // get the colors/sizes back to basics before trying visualize
-        resetColorsSizes()
-
         final Object o = shell.execute(line)
         if (o instanceof Graph) {
             clearGraph()
             def graph = (Graph) o
             def g = graph.traversal()
             g.V().sideEffect { addVertexToGephi(g, it.get()) }.iterate()
-        } else {
-            // an individual Path needs a special case as it is an iterator and gets unrolled by
-            // IteratorUtils.asIterator() if not wrapped in a list prior.
-            final Iterator itty = (o instanceof Path) ? IteratorUtils.asIterator([o]) : IteratorUtils.asIterator(o)
-            def first = true
-            while (itty.hasNext()) {
-                final Object current = itty.next();
-                if (current instanceof Path) {
-                    // paths get returned as iterators - so basically any Iterator that has vertices in it will have
-                    // their path highlighted
-                    final Path path = (Path) current
-                    final List<Vertex> verticesInPath = path.stream().map { Pair pair -> pair.getValue0() }
-                            .filter { Object e -> e instanceof Vertex }.collect(Collectors.toList())
-
-                    for (int ix = 0; ix < verticesInPath.size(); ix++) {
-                        final Vertex v = (Vertex) verticesInPath.get(ix)
-
-                        // if this vertex has already been highlighted in gephi then no need to do it again,
-                        // just update the touch count in memory
-                        if (!vertexAttributes.containsKey(v.id().toString())) {
-                            // this is a new vertex visited so it needs to get highlighted in gephi
-                            visitVertexInGephi(v)
-                            if (ix > 0) {
-                                final Vertex previous = (Vertex) verticesInPath.get(ix - 1)
-                                v.edges(Direction.BOTH).findAll { Edge edge ->
-                                    edge.bothVertices().any { Vertex vertex -> vertex == previous }
-                                }.each { Object edge ->
-                                    visitEdgeInGephi((Edge) edge)
-                                }
-                            }
+        } else if (o instanceof Traversal.Admin) {
+            fadingVertexColors = [:]
+            def traversal = (Traversal.Admin) o
+            def memKeys = traversal.getSideEffects().keys()
+            def memSize = memKeys.size()
+            // assumes user called store("1")...store("n") in ascension
+            for (int i = 1; i <= memSize; i++) {
+                def stepKey = Integer.toString(i)
+                if (memKeys.contains(stepKey)) {
+                    io.out.print("Visualizing vertices at step: $stepKey... ")
+                    updateVisitedVertices()
+                    int visitedCount = 0
+
+                    if (traversal.getSideEffects().keys().contains(stepKey)) {
+                        traversal.getSideEffects().get(stepKey).get().each { element ->
+                            visitVertexToGephi((Vertex) element)
+                            visitedCount++
                         }
-
-                        // need to increment the touch even though this may be the first time passed through
-                        // because the default for touch=1 when it is added to the graph
-                        touch(v)
-                    }
-
-                    if (itty.hasNext() || !first) {
-                        sleep(vizStepDelay)
-                        applyRelativeSizingInGephi()
                     }
-
-                    first = false
+                    io.out.println("Visited: $visitedCount")
                 }
+                sleep(vizStepDelay)
             }
         }
-
-        traversalSubmittedForViz = false
     }
 
     @Override
@@ -223,78 +227,27 @@ class GephiRemoteAcceptor implements RemoteAcceptor {
 
     }
 
-    /**
-     * Visits the last set of vertices traversed and degrades their color and size.
-     */
-    def updateVisitedVertices(def List except = []) {
-        vertexAttributes.keySet().findAll{ vertexId -> !except.contains(vertexId) }.each { String vertexId ->
-            def attrs = vertexAttributes[vertexId]
-            float currentColor = attrs.color
+    def updateVisitedVertices() {
+        fadingVertexColors.keySet().each { vertex ->
+            def currentColor = fadingVertexColors.get(vertex)
             currentColor *= vizColorFadeRate
-
-            int currentSize = attrs["size"]
-            currentSize = Math.max(1, currentSize - (currentSize * vizSizeDecrementRate))
-
-            vertexAttributes.get(vertexId).color = currentColor
-            vertexAttributes.get(vertexId).size = currentSize
-
-            changeVertexAttributes(vertexId)
-        }
-    }
-
-    def touch(Vertex v) {
-        vertexAttributes.get(v.id().toString()).touch++
-    }
-
-    def applyRelativeSizingInGephi() {
-        def touches = vertexAttributes.values().collect{it["touch"]}
-        def max = touches.max()
-        def min = touches.min()
-
-        vertexAttributes.each { k, v ->
-            double touch = v.touch
-
-            // establishes the relative size of the node with a lower limit of 0.25 of vizStartSize
-            def relative = Math.max((touch - min) / Math.max((max - min).doubleValue(), 0.00001), 0.25)
-            int size = Math.max(1, vizStartSize * relative)
-            v.size = size
-
-            changeVertexAttributes(k)
+            fadingVertexColors.put(vertex, currentColor)
+            def props = [:]
+            props.put(vizColorToFade.toString(), currentColor)
+            updateGephiGraph([cn: [(vertex): props]])
         }
     }
 
-    def changeVertexAttributes(def String vertexId) {
-        def props = [:]
-        props.put(vizColorToFade.toString(), vertexAttributes[vertexId].color)
-        props.put("size", vertexAttributes[vertexId].size)
-        updateGephiGraph([cn: [(vertexId): props]])
-    }
-
-    /**
-     * Visit a vertex traversed and initialize its color and size.
-     */
-    def visitVertexInGephi(def Vertex v, def size = vizStartSize) {
+    def visitVertexToGephi(def Vertex v) {
         def props = [:]
         props.put('r', vizStartRGBColor[0])
         props.put('g', vizStartRGBColor[1])
         props.put('b', vizStartRGBColor[2])
-        props.put('size', size)
-        props.put('visited', 1)
+        props.put('x', 1)
 
         updateGephiGraph([cn: [(v.id().toString()): props]])
 
-        vertexAttributes[v.id().toString()] = [color: vizStartRGBColor[fadeColorIndex()], size: size, touch: 1]
-    }
-
-    def visitEdgeInGephi(def Edge e) {
-        def props = [:]
-        props.put('r', vizStartRGBColor[0])
-        props.put('g', vizStartRGBColor[1])
-        props.put('b', vizStartRGBColor[2])
-        props.put('size', vizStartSize)
-        props.put('visited', 1)
-
-        updateGephiGraph([ce: [(e.id().toString()): props]])
+        fadingVertexColors.put(v.id().toString(), vizStartRGBColor[fadeColorIndex()])
     }
 
     def fadeColorIndex() {
@@ -310,10 +263,6 @@ class GephiRemoteAcceptor implements RemoteAcceptor {
         // grab the first property value from the strategies of values
         def props = g.V(v).valueMap().next().collectEntries { kv -> [(kv.key): kv.value[0]] }
         props << [label: v.label()]
-        props.put('r', vizDefaultRGBColor[0])
-        props.put('g', vizDefaultRGBColor[1])
-        props.put('b', vizDefaultRGBColor[2])
-        props.put('visited', 0)
 
         // only add if it does not exist in graph already
         if (!getFromGephiGraph([operation: "getNode", id: v.id().toString()]).isPresent())
@@ -333,7 +282,6 @@ class GephiRemoteAcceptor implements RemoteAcceptor {
         props.put('source', e.outVertex().id().toString())
         props.put('target', e.inVertex().id().toString())
         props.put('directed', true)
-        props.put('visited', 0)
 
         // make sure the in vertex is there but don't add its edges - that will happen later as we are looping
         // all vertices in the graph
@@ -347,13 +295,6 @@ class GephiRemoteAcceptor implements RemoteAcceptor {
         updateGephiGraph([dn: [filter: "ALL"]])
     }
 
-    def resetColorsSizes() {
-        updateGephiGraph([cn: [filter: [nodeAttribute: [attribute: "visited", value: 1]],
-                               attributes: [size: 1, r: vizDefaultRGBColor[0], g: vizDefaultRGBColor[1], b: vizDefaultRGBColor[2]]]])
-        updateGephiGraph([ce: [filter: [edgeAttribute: [attribute: "visited", value: 1]],
-                               attributes: [size: 1, r: vizDefaultRGBColor[0], g: vizDefaultRGBColor[1], b: vizDefaultRGBColor[2]]]])
-    }
-
     def getFromGephiGraph(def Map queryArgs) {
         def http = new HTTPBuilder("http://$host:$port/")
         def resp = http.get(path: "/$workspace", query: queryArgs).getText()
@@ -369,59 +310,4 @@ class GephiRemoteAcceptor implements RemoteAcceptor {
         def http = new HTTPBuilder("http://$host:$port/")
         http.post(path: "/$workspace", requestContentType: JSON, body: postBody, query: [format: "JSON", operation: "updateGraph"])
     }
-
-    @Override
-    public String toString() {
-        return "Gephi - [$workspace]"
-    }
-
-    private void parseVizStepDelay(String arg) {
-        try {
-            vizStepDelay = Long.parseLong(arg)
-        } catch (Exception ignored) {
-            throw new RemoteException("The stepDelay must be a long value")
-        }
-    }
-
-    private void parseVizStartRGBColor(String arg) {
-        try {
-            vizStartRGBColor = arg[1..-2].tokenize(',')*.toFloat()
-            assert (vizStartRGBColor.length == 3)
-        } catch (Exception ignored) {
-            throw new RemoteException("The vizStartRGBColor must be an array of 3 float values, e.g. [0.0,1.0,0.5]")
-        }
-    }
-
-    private void parseVizColorToFade(String arg) {
-        try {
-            vizColorToFade = arg.charAt(0).toLowerCase();
-            assert (vizColorToFade == 'r' || vizColorToFade == 'g' || vizColorToFade == 'b')
-        } catch (Exception ignored) {
-            throw new RemoteException("The vizColorToFade must be one character value among: r, g, b, R, G, B")
-        }
-    }
-
-    private void parseVizColorFadeRate(String arg) {
-        try {
-            vizColorFadeRate = Float.parseFloat(arg)
-        } catch (Exception ignored) {
-            throw new RemoteException("The colorFadeRate must be a float value")
-        }
-    }
-
-    private void parseVizSizeDecrementRate(String arg) {
-        try {
-            vizSizeDecrementRate = Float.parseFloat(arg)
-        } catch (Exception ignored) {
-            throw new RemoteException("The sizeDecrementRate must be a float value")
-        }
-    }
-
-    private void parseVizStartSize(String arg) {
-        try {
-            vizStartSize = Float.parseFloat(arg)
-        } catch (Exception ignored) {
-            throw new RemoteException("The startSize must be a float value")
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiTraversalVisualizationStrategy.groovy
----------------------------------------------------------------------
diff --git a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiTraversalVisualizationStrategy.groovy b/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiTraversalVisualizationStrategy.groovy
deleted file mode 100644
index 661d2ff..0000000
--- a/gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/plugin/GephiTraversalVisualizationStrategy.groovy
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.console.plugin
-
-import groovy.transform.CompileStatic
-import org.apache.tinkerpop.gremlin.process.traversal.Step
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal
-import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeOtherVertexStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.FoldStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalMapStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.UnfoldStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AggregateStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GraphStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.LambdaSideEffectStep
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.NoOpBarrierStep
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.ProfileStrategy
-import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper
-import org.apache.tinkerpop.gremlin.structure.Vertex
-
-import java.util.stream.Collectors
-
-/**
- * A strategy that works in conjuction with the {@link GephiRemoteAcceptor} to automatically inject visualization
- * steps after "vertex" steps to show the vertices traversed for a step.  If the traversal was evaluated in the
- * console normally then the visualization strategy will not be applied.  It must be {@code :submit} to the
- * console for the strategy to be applied.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-@CompileStatic
-class GephiTraversalVisualizationStrategy extends AbstractTraversalStrategy<TraversalStrategy.FinalizationStrategy>
-        implements TraversalStrategy.FinalizationStrategy {
-
-    private static final Set<Class<? extends TraversalStrategy.FinalizationStrategy>> POSTS = new HashSet<>();
-
-    static {
-        POSTS.add(ProfileStrategy.class);
-    }
-
-    private final GephiRemoteAcceptor acceptor
-
-    private final String sideEffectKey = "viz-" + UUID.randomUUID()
-
-    GephiTraversalVisualizationStrategy(final GephiRemoteAcceptor acceptor) {
-        this.acceptor = acceptor
-    }
-
-    @Override
-    void apply(final Traversal.Admin<?, ?> traversal) {
-        if (traversal.getEngine().isComputer())
-            return
-
-        // only apply these strategies if the traversal was :submit to the acceptor - otherwise process as usual
-        if (acceptor.traversalSubmittedForViz) {
-            final List<GraphStep> graphSteps = TraversalHelper.getStepsOfAssignableClass(GraphStep.class, traversal)
-            final List<VertexStep> vertexSteps = TraversalHelper.getStepsOfAssignableClass(VertexStep.class, traversal)
-
-            def List<Step> addAfter = new ArrayList<>()
-            addAfter.addAll(TraversalHelper.getStepsOfAssignableClass(EdgeOtherVertexStep.class, traversal))
-            addAfter.addAll(TraversalHelper.getStepsOfAssignableClass(EdgeVertexStep.class, traversal))
-            addAfter.addAll(vertexSteps.stream().filter { it.returnsVertex() }.collect(Collectors.toList()))
-            addAfter.addAll(graphSteps.stream().filter { it.returnsVertex() }.collect(Collectors.toList()))
-
-            // decay all vertices and visit each one to update their colors to the brightest
-            addAfter.each { Step s ->
-                TraversalHelper.insertAfterStep(new LambdaSideEffectStep(traversal, { Traverser traverser ->
-                    final BulkSet<Vertex> vertices = ((BulkSet<Vertex>) traverser.sideEffects(sideEffectKey))
-                    if (!vertices.isEmpty()) {
-                        acceptor.updateVisitedVertices()
-                        vertices.forEach { Vertex v, Long l -> acceptor.visitVertexInGephi(v) }
-                        vertices.clear()
-                        Thread.sleep(acceptor.vizStepDelay)
-                    }
-                }), s, traversal)
-                TraversalHelper.insertAfterStep(new AggregateStep(traversal, sideEffectKey), s, traversal)
-            }
-
-            // decay all vertices except those that made it through the filter - "this way you can watch
-            // the Gremlins dying" - said daniel kuppitz. can't do this easily with generic FilterStep as
-            // it creates odd behaviors when used with loop (extra decay that probably shouldn't be there.
-            // todo: can this be better? maybe we shouldn't do this at all
-            TraversalHelper.getStepsOfAssignableClass(HasStep.class, traversal).each { HasStep s ->
-                TraversalHelper.insertAfterStep(new LambdaSideEffectStep(traversal, { Traverser traverser ->
-                    final BulkSet<Object> objects = ((BulkSet<Object>) traverser.sideEffects(sideEffectKey))
-                    if (!objects.isEmpty()) {
-                        final List<String> vertices = objects.findAll{ Object o -> o instanceof Vertex}
-                                .collect { Object o -> ((Vertex) o).id().toString() }
-                        acceptor.updateVisitedVertices(vertices)
-                        objects.clear()
-                        Thread.sleep(acceptor.vizStepDelay)
-                    }
-                }), s, traversal)
-                TraversalHelper.insertAfterStep(new AggregateStep(traversal, sideEffectKey), s, traversal)
-            }
-        }
-    }
-
-    @Override
-    public Set<Class<? extends TraversalStrategy.FinalizationStrategy>> applyPost() {
-        return POSTS;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-console/src/main/resources/org/apache/tinkerpop/gremlin/console/groovy/plugin/UtilitiesGremlinPluginScript.groovy
----------------------------------------------------------------------
diff --git a/gremlin-console/src/main/resources/org/apache/tinkerpop/gremlin/console/groovy/plugin/UtilitiesGremlinPluginScript.groovy b/gremlin-console/src/main/resources/org/apache/tinkerpop/gremlin/console/groovy/plugin/UtilitiesGremlinPluginScript.groovy
index 5f5e3c6..3727675 100644
--- a/gremlin-console/src/main/resources/org/apache/tinkerpop/gremlin/console/groovy/plugin/UtilitiesGremlinPluginScript.groovy
+++ b/gremlin-console/src/main/resources/org/apache/tinkerpop/gremlin/console/groovy/plugin/UtilitiesGremlinPluginScript.groovy
@@ -49,4 +49,4 @@ describeGraph = { Class<? extends org.apache.tinkerpop.gremlin.structure.Graph>
 "the implementation itself.  Compliant implementations will faithfully and ${lf}" +
 "honestly supply these Annotations to provide the most accurate depiction of ${lf}" +
 "their support."
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GephiRemoteAcceptorIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GephiRemoteAcceptorIntegrateTest.java b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GephiRemoteAcceptorIntegrateTest.java
index 79a7997..247fae7 100644
--- a/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GephiRemoteAcceptorIntegrateTest.java
+++ b/gremlin-console/src/test/java/org/apache/tinkerpop/gremlin/console/groovy/plugin/GephiRemoteAcceptorIntegrateTest.java
@@ -23,8 +23,6 @@ import org.apache.commons.io.input.NullInputStream;
 import org.apache.tinkerpop.gremlin.console.GremlinGroovysh;
 import org.apache.tinkerpop.gremlin.console.plugin.GephiRemoteAcceptor;
 import org.apache.tinkerpop.gremlin.groovy.plugin.RemoteException;
-import org.apache.tinkerpop.gremlin.structure.Graph;
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
 import org.codehaus.groovy.tools.shell.Groovysh;
 import org.codehaus.groovy.tools.shell.IO;
 import org.junit.Before;
@@ -39,14 +37,13 @@ import java.net.ServerSocket;
 import java.util.Arrays;
 import java.util.Collections;
 
-import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
-import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
-import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson;
 import static com.github.tomakehurst.wiremock.client.WireMock.get;
 import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor;
 import static com.github.tomakehurst.wiremock.client.WireMock.post;
 import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static org.hamcrest.CoreMatchers.startsWith;
 import static org.junit.Assert.assertThat;
@@ -60,7 +57,7 @@ public class GephiRemoteAcceptorIntegrateTest {
 
     private GephiRemoteAcceptor acceptor;
 
-    private final InputStream inputStream = new NullInputStream(0);
+    private final InputStream inputStream  = new NullInputStream(0);
     private final OutputStream outputStream = new ByteArrayOutputStream();
     private final OutputStream errorStream = new ByteArrayOutputStream();
     private final IO io = new IO(inputStream, outputStream, errorStream);
@@ -68,11 +65,6 @@ public class GephiRemoteAcceptorIntegrateTest {
     @Rule
     public WireMockRule wireMockRule = new WireMockRule(port);
 
-    static {
-        final Graph graph = TinkerFactory.createModern();
-        groovysh.getInterp().getContext().setProperty("graph", graph);
-    }
-
     @Before
     public void before() throws Exception {
         acceptor = new GephiRemoteAcceptor(groovysh, io);
@@ -99,101 +91,24 @@ public class GephiRemoteAcceptorIntegrateTest {
 
         acceptor.submit(Arrays.asList("g = org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph.open();g.addVertex();g"));
 
-        wireMockRule.verify(4, postRequestedFor(urlPathEqualTo("/workspace0")));
+        wireMockRule.verify(2, postRequestedFor(urlPathEqualTo("/workspace0")));
         wireMockRule.verify(1, getRequestedFor(urlPathEqualTo("/workspace0")));
     }
 
     @Test
-    public void shouldSubmitPath() throws RemoteException {
-        stubFor(post(urlPathEqualTo("/workspace0"))
-                .withQueryParam("format", equalTo("JSON"))
-                .withQueryParam("operation", equalTo("updateGraph"))
-                .willReturn(aResponse()
-                        .withStatus(200)));
-
-        acceptor.submit(Arrays.asList(
-                "g = graph.traversal();g.V(1).repeat(org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.__().both().dedup()).until(org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.__().hasId(3)).path().next()"));
-
-        wireMockRule.verify(5, postRequestedFor(urlPathEqualTo("/workspace0")));
-    }
-
-    @Test
-    public void shouldSubmitMultiplePaths() throws RemoteException {
-        stubFor(post(urlPathEqualTo("/workspace0"))
-                .withQueryParam("format", equalTo("JSON"))
-                .withQueryParam("operation", equalTo("updateGraph"))
-                .willReturn(aResponse()
-                        .withStatus(200)));
-
-        acceptor.submit(Arrays.asList(
-                "g = graph.traversal();g.V(1).repeat(org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.__().both().dedup()).until(org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.__().hasId(3)).path().toList()"));
-
-        wireMockRule.verify(5, postRequestedFor(urlPathEqualTo("/workspace0")));
-    }
-
-    @Test
-    public void shouldSubmitTraversalAfterConfigWithDefaultG() throws RemoteException {
-        stubFor(post(urlPathEqualTo("/workspace0"))
-                .withQueryParam("format", equalTo("JSON"))
-                .withQueryParam("operation", equalTo("updateGraph"))
-                .willReturn(aResponse()
-                        .withStatus(200)));
-
-        acceptor.configure(Arrays.asList("visualTraversal", "graph"));
-
-        // call iterate() as groovysh isn't rigged to auto-iterate
-        acceptor.submit(Arrays.asList(
-                "vg.V(2).in('knows').out('knows').has('age',org.apache.tinkerpop.gremlin.process.traversal.P.gt(30)).outE('created').has('weight',org.apache.tinkerpop.gremlin.process.traversal.P.gt(0.5d)).inV().iterate()"));
-
-        wireMockRule.verify(18, postRequestedFor(urlPathEqualTo("/workspace0")));
-    }
-
-    @Test
-    public void shouldSubmitTraversalAfterConfigWithDefinedG() throws RemoteException {
-        stubFor(post(urlPathEqualTo("/workspace0"))
-                .withQueryParam("format", equalTo("JSON"))
-                .withQueryParam("operation", equalTo("updateGraph"))
-                .willReturn(aResponse()
-                        .withStatus(200)));
-
-        acceptor.configure(Arrays.asList("visualTraversal", "graph", "x"));
-
-        // call iterate() as groovysh isn't rigged to auto-iterate
-        acceptor.submit(Arrays.asList(
-                "x.V(2).in('knows').out('knows').has('age',org.apache.tinkerpop.gremlin.process.traversal.P.gt(30)).outE('created').has('weight',org.apache.tinkerpop.gremlin.process.traversal.P.gt(0.5d)).inV().iterate()"));
-
-        wireMockRule.verify(18, postRequestedFor(urlPathEqualTo("/workspace0")));
-    }
-
-    @Test
-    public void shouldSubmitTraversalOverRepeat() throws RemoteException {
-        stubFor(post(urlPathEqualTo("/workspace0"))
-                .withQueryParam("format", equalTo("JSON"))
-                .withQueryParam("operation", equalTo("updateGraph"))
-                .willReturn(aResponse()
-                        .withStatus(200)));
-
-        acceptor.configure(Arrays.asList("visualTraversal", "graph"));
-
-        // call iterate() as groovysh isn't rigged to auto-iterate
-        acceptor.submit(Arrays.asList(
-                "vg.V(1).repeat(org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.__().out()).times(2).iterate()"));
-
-        wireMockRule.verify(13, postRequestedFor(urlPathEqualTo("/workspace0")));
-    }
-
-    @Test
-    public void shouldClearGraph() throws RemoteException {
+    public void shouldSubmitTraversal() throws RemoteException {
         stubFor(post(urlPathEqualTo("/workspace0"))
                 .withQueryParam("format", equalTo("JSON"))
                 .withQueryParam("operation", equalTo("updateGraph"))
-                .withRequestBody(equalToJson("{\"dn\":{\"filter\":\"ALL\"}}"))
                 .willReturn(aResponse()
                         .withStatus(200)));
 
-        acceptor.submit(Arrays.asList("clear"));
+        acceptor.submit(Arrays.asList("g = org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory.createModern().traversal();" +
+                "traversal = g.V(2).store('1').in('knows').store('2').out('knows').has('age',org.apache.tinkerpop.gremlin.process.traversal.P.gt(30)).store('3').outE('created').has('weight',org.apache.tinkerpop.gremlin.process.traversal.P.gt(0.5d)).inV().store('4');" +
+                "traversal.iterate();" +
+                "traversal"));
 
-        wireMockRule.verify(1, postRequestedFor(urlPathEqualTo("/workspace0")));
+        wireMockRule.verify(10, postRequestedFor(urlPathEqualTo("/workspace0")));
     }
 
     private static int pickOpenPort() {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-core/pom.xml b/gremlin-core/pom.xml
index f739355..f60f15a 100644
--- a/gremlin-core/pom.xml
+++ b/gremlin-core/pom.xml
@@ -20,7 +20,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.1.0-SNAPSHOT</version>
+        <version>3.0.1-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-core</artifactId>
     <name>Apache TinkerPop :: Gremlin Core</name>

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Path.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Path.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Path.java
index 25e69bb..f8fa67b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Path.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Path.java
@@ -21,8 +21,12 @@ package org.apache.tinkerpop.gremlin.process.traversal;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.javatuples.Pair;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
 import java.util.function.BiConsumer;
+import java.util.function.Consumer;
 import java.util.stream.IntStream;
 import java.util.stream.Stream;
 
@@ -33,7 +37,7 @@ import java.util.stream.Stream;
  *
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public interface Path extends Cloneable, Iterable<Object> {
+public interface Path extends Cloneable {
 
     /**
      * Get the number of step in the path.
@@ -53,13 +57,13 @@ public interface Path extends Cloneable, Iterable<Object> {
      */
     public Path extend(final Object object, final Set<String> labels);
 
-    /**
-     * Add labels to the head of the path.
-     *
-     * @param labels the labels at the head of the path
-     * @return the path with added labels
-     */
-    public Path extend(final Set<String> labels);
+    public default Path extend(final Object object, final String... labels) {
+        final Path path = this.extend(object, Collections.emptySet());
+        for (final String label : labels) {
+            path.addLabel(label);
+        }
+        return path;
+    }
 
     /**
      * Get the object associated with the particular label of the path.
@@ -103,7 +107,7 @@ public interface Path extends Cloneable, Iterable<Object> {
      * @throws IllegalArgumentException if the path does not contain the label
      */
     public default <A> A get(final Pop pop, final String label) throws IllegalArgumentException {
-        if (Pop.all == pop) {
+        if(Pop.all == pop) {
             if (this.hasLabel(label)) {
                 final Object object = this.get(label);
                 if (object instanceof List)
@@ -144,6 +148,13 @@ public interface Path extends Cloneable, Iterable<Object> {
     }
 
     /**
+     * Add label to the current head of the path.
+     *
+     * @param label the label to add to the head of the path
+     */
+    public void addLabel(final String label);
+
+    /**
      * An ordered list of the objects in the path.
      *
      * @return the objects of the path
@@ -178,8 +189,8 @@ public interface Path extends Cloneable, Iterable<Object> {
         return true;
     }
 
-    public default Iterator<Object> iterator() {
-        return this.objects().iterator();
+    public default void forEach(final Consumer<Object> consumer) {
+        this.objects().forEach(consumer);
     }
 
     public default void forEach(final BiConsumer<Object, Set<String>> consumer) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
index e0a63b6..bf56d31 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/TraversalStrategies.java
@@ -22,7 +22,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.Conjun
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.EngineDependentStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.ProfileStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.AdjacentToIncidentStrategy;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.FilterRankingStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.DedupBijectionStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IdentityRemovalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IncidentToAdjacentStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.MatchPredicateStrategy;
@@ -200,7 +200,7 @@ public interface TraversalStrategies extends Serializable, Cloneable {
                     ProfileStrategy.instance(),
                     IncidentToAdjacentStrategy.instance(),
                     AdjacentToIncidentStrategy.instance(),
-                    FilterRankingStrategy.instance(),
+                    DedupBijectionStrategy.instance(),
                     IdentityRemovalStrategy.instance(),
                     MatchPredicateStrategy.instance(),
                     RangeByIsCountStrategy.instance(),

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traverser.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traverser.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traverser.java
index 06925a8..fc5d421 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traverser.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Traverser.java
@@ -21,7 +21,6 @@ package org.apache.tinkerpop.gremlin.process.traversal;
 import org.apache.tinkerpop.gremlin.structure.util.Attachable;
 
 import java.io.Serializable;
-import java.util.Set;
 import java.util.function.Function;
 
 /**
@@ -181,8 +180,6 @@ public interface Traverser<T> extends Serializable, Comparable<Traverser<T>>, Cl
          */
         public Admin<T> split();
 
-        public void addLabels(final Set<String> labels);
-
         /**
          * Set the current object location of the traverser.
          *

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index a643e48..008a46c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -18,22 +18,137 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.dsl.graph;
 
-import org.apache.tinkerpop.gremlin.process.traversal.*;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.*;
+import org.apache.tinkerpop.gremlin.process.traversal.Order;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.ElementValueTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.FunctionTraverser;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.IdentityTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.LoopTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.PredicateTraverser;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.TokenTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.lambda.TrueTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ComparatorHolder;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalOptionParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.branch.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.filter.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.map.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.*;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.*;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.BranchStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.ChooseStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.branch.UnionStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.AndStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CoinStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.ConjunctionStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.CyclicPathStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.HasStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.IsStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.LambdaFilterStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.NotStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.OrStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.RangeGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SampleGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.SimplePathStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TimeLimitStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TraversalFilterStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WherePredicateStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTraversalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddVertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.CoalesceStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ConstantStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.DedupLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeOtherVertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.EdgeVertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.FoldStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupCountStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.IdStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.LabelStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaFlatMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapKeysStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MapValuesStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MaxLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MinLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PathStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertiesStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyKeyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.PropertyValueStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.RangeLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SackStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SampleLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectOneStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumGlobalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.SumLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.TailLocalStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalFlatMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.TraversalMapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.TreeStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.UnfoldStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.VertexStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AddPropertyStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.AggregateStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupCountSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.IdentityStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.InjectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.LambdaSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackElementValueStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SackObjectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectCapStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StoreStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SubgraphStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TraversalSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TreeSideEffectStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ElementFunctionComparator;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.ElementValueComparator;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.NoOpBarrierStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.TraversalComparator;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import org.apache.tinkerpop.gremlin.structure.*;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.PropertyType;
+import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.util.function.ConstantSupplier;
 
-import java.util.*;
-import java.util.function.*;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.BiFunction;
+import java.util.function.BinaryOperator;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Predicate;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -402,18 +517,14 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         return this.asAdmin().addStep(new SackStep<>(this.asAdmin()));
     }
 
-    public default GraphTraversal<S, Integer> loops() {
-        return this.asAdmin().addStep(new LoopsStep<>(this.asAdmin()));
-    }
-
     /**
      * Map the {@link Traverser} to a {@link Map} projection of sideEffect values, map values, and/or path values.
      *
-     * @param pop             if there are multiple objects referenced in the path, the {@link Pop} to use.
+     * @param pop               if there are multiple objects referenced in the path, the {@link Pop} to use.
      * @param selectKey1      the first key to project
      * @param selectKey2      the second key to project
      * @param otherSelectKeys the third+ keys to project
-     * @param <E2>            the type of the objects projected
+     * @param <E2>              the type of the objects projected
      * @return the traversal with an appended {@link SelectStep}.
      */
     public default <E2> GraphTraversal<S, Map<String, E2>> select(final Pop pop, final String selectKey1, final String selectKey2, String... otherSelectKeys) {
@@ -430,7 +541,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
      * @param selectKey1      the first key to project
      * @param selectKey2      the second key to project
      * @param otherSelectKeys the third+ keys to project
-     * @param <E2>            the type of the objects projected
+     * @param <E2>              the type of the objects projected
      * @return the traversal with an appended {@link SelectStep}.
      */
     public default <E2> GraphTraversal<S, Map<String, E2>> select(final String selectKey1, final String selectKey2, String... otherSelectKeys) {
@@ -872,7 +983,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
     }
 
     public default GraphTraversal<S, E> times(final int maxLoops) {
-        return this.until(new LoopTraversal<>(maxLoops));
+        return this.until(new LoopTraversal(maxLoops));
     }
 
     public default <E2> GraphTraversal<S, E2> local(final Traversal<?, E2> localTraversal) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index e2d9e80..3d49d7a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -18,14 +18,28 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.dsl.graph;
 
-import org.apache.tinkerpop.gremlin.process.traversal.*;
+import org.apache.tinkerpop.gremlin.process.traversal.P;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
-import org.apache.tinkerpop.gremlin.structure.*;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.T;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.function.*;
+import java.util.function.BiFunction;
+import java.util.function.BinaryOperator;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Predicate;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -287,13 +301,6 @@ public class __ {
     }
 
     /**
-     * @see {@link GraphTraversal#loops()}
-     */
-    public static <A> GraphTraversal<A, Integer> loops() {
-        return __.<A>start().loops();
-    }
-
-    /**
      * @see {@link GraphTraversal#select(Pop, String)}
      */
     public static <A, B> GraphTraversal<A, B> select(final Pop pop, final String selectKey) {

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/LoopTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/LoopTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/LoopTraversal.java
index 9c37853..59321f2 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/LoopTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/LoopTraversal.java
@@ -1,24 +1,21 @@
 /*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- *  * Licensed to the Apache Software Foundation (ASF) under one
- *  * or more contributor license agreements.  See the NOTICE file
- *  * distributed with this work for additional information
- *  * regarding copyright ownership.  The ASF licenses this file
- *  * to you under the Apache License, Version 2.0 (the
- *  * "License"); you may not use this file except in compliance
- *  * with the License.  You may obtain a copy of the License at
- *  *
- *  * http://www.apache.org/licenses/LICENSE-2.0
- *  *
- *  * Unless required by applicable law or agreed to in writing,
- *  * software distributed under the License is distributed on an
- *  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  * KIND, either express or implied.  See the License for the
- *  * specific language governing permissions and limitations
- *  * under the License.
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
-
 package org.apache.tinkerpop.gremlin.process.traversal.lambda;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
@@ -54,4 +51,4 @@ public final class LoopTraversal<S, E> extends AbstractLambdaTraversal<S, E> {
     public int hashCode() {
         return this.getClass().hashCode() ^ Long.hashCode(this.maxLoops);
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
index 6724619..1ad9f43 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Scoping.java
@@ -38,9 +38,9 @@ public interface Scoping {
     public static enum Variable {START, END}
 
     public static final Set<TraverserRequirement> TYPICAL_LOCAL_REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT, TraverserRequirement.SIDE_EFFECTS);
-    public static final Set<TraverserRequirement> TYPICAL_GLOBAL_REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT, TraverserRequirement.LABELED_PATH, TraverserRequirement.SIDE_EFFECTS);
+    public static final Set<TraverserRequirement> TYPICAL_GLOBAL_REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT, TraverserRequirement.PATH, TraverserRequirement.SIDE_EFFECTS);
     public static final TraverserRequirement[] TYPICAL_LOCAL_REQUIREMENTS_ARRAY = new TraverserRequirement[]{TraverserRequirement.OBJECT, TraverserRequirement.SIDE_EFFECTS};
-    public static final TraverserRequirement[] TYPICAL_GLOBAL_REQUIREMENTS_ARRAY = new TraverserRequirement[]{TraverserRequirement.OBJECT, TraverserRequirement.LABELED_PATH, TraverserRequirement.SIDE_EFFECTS};
+    public static final TraverserRequirement[] TYPICAL_GLOBAL_REQUIREMENTS_ARRAY = new TraverserRequirement[]{TraverserRequirement.OBJECT, TraverserRequirement.PATH, TraverserRequirement.SIDE_EFFECTS};
 
     public default <S> S getScopeValue(final Pop pop, final String key, final Traverser.Admin<?> traverser) throws IllegalArgumentException {
         if (traverser.getSideEffects().get(key).isPresent())

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
index 2989096..eee95e7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/BranchStep.java
@@ -116,7 +116,6 @@ public class BranchStep<S, E, M> extends ComputerAwareStep<S, E> implements Trav
             branch.forEach(traversal -> {
                 final Traverser.Admin<E> split = (Traverser.Admin<E>) start.split();
                 split.setStepId(traversal.getStartStep().getId());
-                //split.addLabels(this.labels);
                 ends.add(split);
             });
         }
@@ -126,7 +125,6 @@ public class BranchStep<S, E, M> extends ComputerAwareStep<S, E> implements Trav
                 anyBranch.forEach(traversal -> {
                     final Traverser.Admin<E> split = (Traverser.Admin<E>) start.split();
                     split.setStepId(traversal.getStartStep().getId());
-                    //split.addLabels(this.labels);
                     ends.add(split);
                 });
             }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
index f9e1df6..21d848a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
@@ -28,12 +28,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Set;
+import java.util.*;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -169,7 +164,6 @@ public final class RepeatStep<S> extends ComputerAwareStep<S, S> implements Trav
         if (doUntil(start, true)) {
             start.resetLoops();
             start.setStepId(this.getNextStep().getId());
-            start.addLabels(this.labels);
             return IteratorUtils.of(start);
         } else {
             start.setStepId(this.repeatTraversal.getStartStep().getId());
@@ -259,7 +253,6 @@ public final class RepeatStep<S> extends ComputerAwareStep<S, S> implements Trav
             if (doUntil(start, false)) {
                 start.resetLoops();
                 start.setStepId(RepeatStep.this.getNextStep().getId());
-                start.addLabels(RepeatStep.this.labels);
                 return IteratorUtils.of(start);
             } else {
                 start.setStepId(RepeatStep.this.getId());

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
index 0dfbe5f..5dc8510 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
@@ -105,7 +105,7 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
 
     @Override
     public Set<TraverserRequirement> getRequirements() {
-        return this.dedupLabels == null ? this.getSelfAndChildRequirements(TraverserRequirement.BULK) : this.getSelfAndChildRequirements(TraverserRequirement.LABELED_PATH, TraverserRequirement.BULK);
+        return this.dedupLabels == null ? this.getSelfAndChildRequirements(TraverserRequirement.BULK) : this.getSelfAndChildRequirements(TraverserRequirement.PATH, TraverserRequirement.BULK);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WherePredicateStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WherePredicateStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WherePredicateStep.java
index bd4ef03..a1a5455 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WherePredicateStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/WherePredicateStep.java
@@ -31,13 +31,24 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.ConjunctionP;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public final class WherePredicateStep<S> extends FilterStep<S> implements Scoping {
 
+    private static final Set<TraverserRequirement> LOCAL_REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT, TraverserRequirement.SIDE_EFFECTS);
+    private static final Set<TraverserRequirement> GLOBAL_REQUIREMENTS = EnumSet.of(TraverserRequirement.PATH, TraverserRequirement.SIDE_EFFECTS);
+
     protected String startKey;
     protected List<String> selectKeys;
     protected P<Object> predicate;

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsStep.java
deleted file mode 100644
index 2db9ab9..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LoopsStep.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-
-/**
- * @author Daniel Kuppitz (http://gremlin.guru)
- */
-public final class LoopsStep<S> extends MapStep<S, Integer> {
-
-    public LoopsStep(final Traversal.Admin traversal) {
-        super(traversal);
-    }
-
-    @Override
-    protected Integer map(final Traverser.Admin<S> traverser) {
-        return traverser.loops();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapKeysStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapKeysStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapKeysStep.java
index c8e722b..8aea53d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapKeysStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapKeysStep.java
@@ -23,29 +23,21 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.util.iterator.EmptyIterator;
 
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.Map;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
- * @author Daniel Kuppitz (http://gremlin.guru)
  */
-public final class MapKeysStep<S, E> extends FlatMapStep<S, E> {
+public final class MapKeysStep<S> extends FlatMapStep<Map<S, ?>, S> {
 
     public MapKeysStep(final Traversal.Admin traversal) {
         super(traversal);
     }
 
     @Override
-    protected Iterator<E> flatMap(final Traverser.Admin<S> traverser) {
-        final S s = traverser.get();
-        if (s instanceof Map)
-            return ((Map) s).keySet().iterator();
-        if (s instanceof Map.Entry)
-            return Collections.singleton((E) ((Map.Entry) s).getKey()).iterator();
-        return EmptyIterator.instance();
+    protected Iterator<S> flatMap(final Traverser.Admin<Map<S, ?>> traverser) {
+        return traverser.get().keySet().iterator();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesStep.java
index 10e35e2..fe41d15 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MapValuesStep.java
@@ -23,29 +23,21 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.util.iterator.EmptyIterator;
 
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.Map;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
- * @author Daniel Kuppitz (http://gremlin.guru)
  */
-public final class MapValuesStep<S, E> extends FlatMapStep<S, E> {
+public final class MapValuesStep<S> extends FlatMapStep<Map<?, S>, S> {
 
     public MapValuesStep(final Traversal.Admin traversal) {
         super(traversal);
     }
 
     @Override
-    protected Iterator<E> flatMap(final Traverser.Admin<S> traverser) {
-        final S s = traverser.get();
-        if (s instanceof Map)
-            return ((Map) s).values().iterator();
-        if (s instanceof Map.Entry)
-            return Collections.singleton((E) ((Map.Entry) s).getValue()).iterator();
-        return EmptyIterator.instance();
+    protected Iterator<S> flatMap(final Traverser.Admin<Map<?, S>> traverser) {
+        return traverser.get().values().iterator();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
index dcb2078..ae1a264 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MatchStep.java
@@ -312,8 +312,8 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
                 traverser = this.starts.next();
                 final Path path = traverser.path();
                 if (!this.matchStartLabels.stream().filter(path::hasLabel).findAny().isPresent())
-                    traverser.addLabels(Collections.singleton(this.computedStartLabel)); // if the traverser doesn't have a legal start, then provide it the pre-computed one
-                traverser.addLabels(Collections.singleton(this.getId())); // so the traverser never returns to this branch ever again
+                    path.addLabel(this.computedStartLabel); // if the traverser doesn't have a legal start, then provide it the pre-computed one
+                path.addLabel(this.getId()); // so the traverser never returns to this branch ever again
             }
             ///
             if (!this.isDuplicate(traverser)) {
@@ -337,14 +337,13 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
             final Traverser.Admin traverser = this.starts.next();
             final Path path = traverser.path();
             if (!this.matchStartLabels.stream().filter(path::hasLabel).findAny().isPresent())
-                traverser.addLabels(Collections.singleton(this.computedStartLabel)); // if the traverser doesn't have a legal start, then provide it the pre-computed one
+                path.addLabel(this.computedStartLabel); // if the traverser doesn't have a legal start, then provide it the pre-computed one
             if (!path.hasLabel(this.getId()))
-                traverser.addLabels(Collections.singleton(this.getId())); // so the traverser never returns to this branch ever again
+                path.addLabel(this.getId()); // so the traverser never returns to this branch ever again
             ///
             if (!this.isDuplicate(traverser)) {
                 if (hasMatched(this.conjunction, traverser)) {
                     traverser.setStepId(this.getNextStep().getId());
-                    traverser.addLabels(this.labels);
                     return IteratorUtils.of(traverser.split(this.getBindings(traverser), this));
                 }
                 if (this.conjunction == ConjunctionStep.Conjunction.AND) {
@@ -375,7 +374,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
 
     @Override
     public Set<TraverserRequirement> getRequirements() {
-        return this.getSelfAndChildRequirements(TraverserRequirement.LABELED_PATH, TraverserRequirement.SIDE_EFFECTS);
+        return this.getSelfAndChildRequirements(TraverserRequirement.PATH, TraverserRequirement.SIDE_EFFECTS);
     }
 
     //////////////////////////////
@@ -393,7 +392,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
         @Override
         protected Traverser<Object> processNextStart() throws NoSuchElementException {
             final Traverser.Admin<Object> traverser = this.starts.next();
-            traverser.addLabels(Collections.singleton(this.getId()));
+            traverser.path().addLabel(this.getId());
             ((MatchStep<?, ?>) this.getTraversal().getParent()).getMatchAlgorithm().recordStart(traverser, this.getTraversal());
             // TODO: sideEffect check?
             return null == this.selectKey ? traverser : traverser.split(traverser.path().get(Pop.last, this.selectKey), this);
@@ -422,8 +421,8 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
                 this.scopeKeys = new HashSet<>();
                 if (null != this.selectKey)
                     this.scopeKeys.add(this.selectKey);
-                if (this.getNextStep() instanceof WhereTraversalStep || this.getNextStep() instanceof WherePredicateStep)
-                   this.scopeKeys.addAll(((Scoping) this.getNextStep()).getScopeKeys());
+                if (this.getNextStep() instanceof Scoping)
+                    this.scopeKeys.addAll(((Scoping) this.getNextStep()).getScopeKeys());
                 this.scopeKeys = Collections.unmodifiableSet(this.scopeKeys);
             }
             return this.scopeKeys;
@@ -445,7 +444,7 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
                 final Traverser.Admin traverser = this.starts.next();
                 // no end label
                 if (null == this.matchKey) {
-                    if (this.traverserStepIdAndLabelsSetByChild)
+                    if (this.traverserStepIdSetByChild)
                         traverser.setStepId(((MatchStep<?, ?>) this.getTraversal().getParent()).getId());
                     ((MatchStep<?, ?>) this.getTraversal().getParent()).getMatchAlgorithm().recordEnd(traverser, this.getTraversal());
                     return traverser;
@@ -454,9 +453,9 @@ public final class MatchStep<S, E> extends ComputerAwareStep<S, Map<String, E>>
                 // path check
                 final Path path = traverser.path();
                 if (!path.hasLabel(this.matchKey) || traverser.get().equals(path.get(Pop.last, this.matchKey))) {
-                    if (this.traverserStepIdAndLabelsSetByChild)
+                    if (this.traverserStepIdSetByChild)
                         traverser.setStepId(((MatchStep<?, ?>) this.getTraversal().getParent()).getId());
-                    traverser.addLabels(Collections.singleton(this.matchKey));
+                    traverser.path().addLabel(this.matchKey);
                     ((MatchStep<?, ?>) this.getTraversal().getParent()).getMatchAlgorithm().recordEnd(traverser, this.getTraversal());
                     return traverser;
                 }



[5/6] incubator-tinkerpop git commit: Revert "Merge remote-tracking branch 'origin' into tp30"

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/6902e68a/docs/static/images/tinkerpop3.graffle
----------------------------------------------------------------------
diff --git a/docs/static/images/tinkerpop3.graffle b/docs/static/images/tinkerpop3.graffle
index f3cd678..0bdf9b8 100644
--- a/docs/static/images/tinkerpop3.graffle
+++ b/docs/static/images/tinkerpop3.graffle
@@ -20,1566 +20,11 @@
 	<key>GuidesVisible</key>
 	<string>YES</string>
 	<key>ImageCounter</key>
-	<integer>102</integer>
+	<integer>96</integer>
 	<key>Images</key>
 	<array>
 		<dict>
 			<key>Extension</key>
-			<string>tiff</string>
-			<key>ID</key>
-			<integer>100</integer>
-			<key>RawData</key>
-			<data>
-			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
-			HMkyzNM7fRAAEcxCgUaTfEiMRhN04zpNsazZNcdTvNSCR5L8gS/I
-			UgwjIcIIFJFEyVRVEUPJcnULJEhUHQE0UtS9MUzTVN05Ts/T3PSB
-			LrUE81LOU7rtNVVR2hcfR7SsvVjH9C0JRsjUnQVaVhWdPV7X1f2B
-			YNhWHC0/1FUFV2Og1jLpVib1cg9oVlQKDWpXlr2lYltW3blu29b9
-			wXDcVx3JcqcoCAAPAQAAAwAAAAEA5AAAAQEAAwAAAAEBRwAAAQIA
-			AwAAAAQAAEEOAQMAAwAAAAEABQAAAQYAAwAAAAEAAgAAAREABAAA
-			AAMAAEEWARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAAAAEA
-			jwAAARcABAAAAAMAAEEiARwAAwAAAAEAAQAAAT0AAwAAAAEAAgAA
-			AVIAAwAAAAEAAQAAAVMAAwAAAAQAAEEuh3MABwAADEgAAEE2AAAA
-			AAAIAAgACAAIAAAACAAAIg4AADf+AAAiBgAAFfAAAAhWAAEAAQAB
-			AAEAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABh
-			Y3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAQAA9tYAAQAA
-			AADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNkZXNjAAABhAAA
-			AGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRn
-			WFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRk
-			AAACxAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD
-			+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAA
-			CAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHly
-			aWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAA
-			ZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAA
-			ABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAA
-			APNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAA
-			AABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAA
-			AAAAJKAAAA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3
-			LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5j
-			aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1
-			bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAC5J
-			RUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAt
-			IHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAs
-			UmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2
-			LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRp
-			dGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1ye
-			AAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAA
-			AAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAA
-			AAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoA
-			TwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCu
-			ALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMB
-			GQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGa
-			AaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgC
-			QQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMA
-			AwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD
-			7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTw
-			BP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYG
-			JwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0
-			B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI
-			+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqY
-			Cq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwM
-			dQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5k
-			Dn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4Q
-			mxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLj
-			EwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYV
-			eBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgb
-			GEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwb
-			FBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4W
-			HkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUgh
-			dSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTa
-			JQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEo
-			oijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxu
-			LKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGww
-			pDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTY
-			NRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5
-			fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4g
-			PmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdD
-			OkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhL
-			SJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN
-			3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1Nf
-			U6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZ
-			aVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19h
-			X7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl
-			52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xX
-			bK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFz
-			XXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pG
-			eqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuB
-			zYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokz
-			iZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaR
-			P5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkk
-			mZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUeh
-			tqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaoc
-			qo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKz
-			OLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7wh
-			vJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvF
-			yMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83
-			z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZ
-			bNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj
-			4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7Zzu
-			KO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio
-			+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//8=
-			</data>
-		</dict>
-		<dict>
-			<key>Extension</key>
-			<string>tiff</string>
-			<key>ID</key>
-			<integer>98</integer>
-			<key>RawData</key>
-			<data>
-			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
-			hfAB45Qf4ds5wBIe52AeqQweIc42JfxqofCSIAYBJlQfweBS8ni3
-			AA5iiyZHDRguwCIHQSZVEzDiACgHbiAAhvoBoCSpQUYOpkIJQMhB
-			obgZxjoG4LIWVE1E6JE1QRrYQeRgACoHBJ5EAAAT4FhCwJYPZFge
-			wCgt4eYZYhYBoEpUs6gt8jUlSEcNYA5ixR0HTSrPafA7Q6wf44hY
-			wmgeYfZHABNVBWgk7uqGS9guwfwftKZS4mJOBGwux/UNZZQywfoA
-			JEQf1FJQxCwnSSLtZBoAQByGQfIdkibtRFlY5OztY2gA4ExegAwC
-			JXIuAuyazv5Eg7g7wBQBg44Z4UY7IHwNQlAPI8oAAPQYBE4cYYYN
-			Y1IfY8QGQJ4SVO1O5ctFIdQIgbIYYTgXYEoHZUoB4B7NIYwowABA
-			MZwysm4vJHABAfBE7wsLYe4bZywfwe4wIe7HImLm4lA0w67Wxt1V
-			4B6LoexgACYH4px3yjA8JNABwAIP5HMfATYL40QLARRnIa4WsvYG
-			wMU01fMsIbIXLL4ALToDIGIOIrIQwIg7IQ4ZIrwYpegiZUoiDWQB
-			IDiGQB4AozNVA6jEZkowrQ46UnhrB2QkgdQwofMgof09cUo6wfoz
-			IwaGTyhi6bAwNo5WwfEXTpJYAhgBQh6gRYy1pEUJRsrPCCpi4AoB
-			w8SaIhZY0xYt4BoHAowBQDLNjm5F48YxSgJjAwoBwBwn4Z4VD0AH
-			xwAAAMw6gRobBE4c4X5moekJJ7YJQS9fFoRcwaoXIQIf4DwHQNAA
-			ADIBr0ARw9gAAKAQ1c4wKIYfwAz0B85yQyRBoeQap6gegdDJYBYC
-			hGSDtiYdZS76BRSOQv4folhEZjoCgIQp0PAIRbYeghZ457S+R6gN
-			Um4AARIXI1AZ4VZ6gHwM4ZF293BwobIYMboA6649IGLiwrASALQE
-			4AB58E4rYYQNJM1WqgglAcAbYlAWoXAlAZSCxs7q8UgCQ4QEZVwC
-			gn6WDswDGB6wplQxQlIdYkcNIwVZAvY5oe4eIhdo52bpI64BBY1w
-			Ih5aYyzt6dIDZSgxbfhC4xQBq1IAodg4gB5kAu4Gx9ofgfQg5fYv
-			QfQeZqoCRigB4BhRoZQT6GQIZnIAAJo4QUweJE8T0NCfKrIF4KwV
-			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
-			v4AwwQAUkgv4kYfwBxAc6I3MdRRoA4e7g4BgmzEzgofABowQG4Io
-			PVMVCtSdSlCgeYeIbUqIaKZYBqwgAAdwdJSbaw3KKhjQzRO8YELg
-			2wA4A44A8p9LEgn75A8A6jaIwYesJrX5DQeZawARs48Yp05g3It8
-			j4Axu7nU5o8wDIEBhadw1AC4EFMNSoqAZQSoFQ8ICBOQAo34n4BA
-			tgehaQBofg3LbotCKD2Qew5wfQA8joBjjgdTD5JpBweRxAegjQhb
-			oDNwIQNVSVadf1f9gAh4eYdwc4RCKgewO4drhpR0hLDZjT4A1oA1
-			Esnwg4ejBYywv9TwBKE7yrds5hvyvQAAEIFqSofE5xKzvlftgNgQ
-			eaIQbgXxBof4z5vwA40tjY0oAoBgy4eAepY7x4tlJJjRao2wBCWo
-			frA5h4fA0AAIfI7oDoFyaQDIF4L1lVldq1q9rFrNqwc4bQXof4f0
-			M4v5jgctUKKw6gwZLzNQ6lWJDRY8TBnoCICp0gEYG4NdqtrVvFvN
-			vVvdvlvtv1v9wFwNwVwdwlwtw1w9xFqwgIAADgEAAAMAAAABAJEA
-			AAEBAAMAAAABALEAAAECAAMAAAAEAACcegEDAAMAAAABAAUAAAEG
-			AAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA
-			AAABAAQAAAEWAAMAAAABALEAAAEXAAQAAAABAACbxAEcAAMAAAAB
-			AAEAAAE9AAMAAAABAAIAAAFSAAMAAAABAAIAAAFTAAMAAAAEAACc
-			ggAAAAAACAAIAAgACAABAAEAAQAB
-			</data>
-		</dict>
-		<dict>
-			<key>Extension</key>
 			<string>pdf</string>
 			<key>ID</key>
 			<integer>95</integer>
@@ -150024,7 +148469,7 @@
 	<key>MasterSheets</key>
 	<array/>
 	<key>ModificationDate</key>
-	<string>2015-07-16 19:25:41 +0000</string>
+	<string>2015-06-30 15:11:23 +0000</string>
 	<key>Modifier</key>
 	<string>Marko Rodriguez</string>
 	<key>NotesVisible</key>
@@ -192581,379 +191026,6 @@ age:29}</string>
 			<array>
 				<dict>
 					<key>Bounds</key>
-					<string>{{263, 404}, {10.838310989380254, 15.54441970845326}}</string>
-					<key>Class</key>
-					<string>ShapedGraphic</string>
-					<key>ID</key>
-					<integer>96</integer>
-					<key>ImageID</key>
-					<integer>100</integer>
-					<key>Shape</key>
-					<string>Rectangle</string>
-					<key>Style</key>
-					<dict>
-						<key>fill</key>
-						<dict>
-							<key>Draws</key>
-							<string>NO</string>
-						</dict>
-						<key>shadow</key>
-						<dict>
-							<key>Draws</key>
-							<string>NO</string>
-						</dict>
-						<key>stroke</

<TRUNCATED>