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/02/12 14:02:08 UTC

[42/77] [partial] incubator-tinkerpop git commit: moved com/tinkerpop directories to org/apache/tinkerpop

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java
deleted file mode 100644
index c93d4cd..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java
+++ /dev/null
@@ -1,782 +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 com.tinkerpop.gremlin.process.graph.traversal;
-
-import com.tinkerpop.gremlin.process.Path;
-import com.tinkerpop.gremlin.process.Scope;
-import com.tinkerpop.gremlin.process.Step;
-import com.tinkerpop.gremlin.process.T;
-import com.tinkerpop.gremlin.process.Traversal;
-import com.tinkerpop.gremlin.process.TraversalEngine;
-import com.tinkerpop.gremlin.process.Traverser;
-import com.tinkerpop.gremlin.process.computer.ComputerResult;
-import com.tinkerpop.gremlin.process.computer.GraphComputer;
-import com.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import com.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
-import com.tinkerpop.gremlin.process.graph.traversal.lambda.LoopTraversal;
-import com.tinkerpop.gremlin.process.graph.traversal.step.ComparatorHolder;
-import com.tinkerpop.gremlin.process.graph.traversal.step.TraversalOptionParent;
-import com.tinkerpop.gremlin.process.graph.traversal.step.branch.BranchStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.branch.ChooseStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.branch.LocalStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.branch.RepeatStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.branch.UnionStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.AndStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.CoinStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.CyclicPathStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.DedupStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.ExceptStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.HasStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.HasTraversalStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.IsStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.LambdaFilterStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.OrStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.RangeStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.RetainStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.SampleStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.SimplePathStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.TimeLimitStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.filter.WhereStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.BackStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.CoalesceStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.CountStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.EdgeOtherVertexStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.EdgeVertexStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.FoldStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.IdStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.KeyStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.LabelStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.LambdaFlatMapStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.LambdaMapStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.MaxStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.MeanStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.MinStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.OrderGlobalStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.OrderLocalStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.PathStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.PropertiesStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.PropertyMapStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.PropertyValueStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.SackStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.SelectOneStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.SelectStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.SumStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.UnfoldStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.VertexStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.map.match.MatchStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.AddEdgeStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.AggregateStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.GroupCountStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.GroupStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.IdentityStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.InjectStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.LambdaSideEffectStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.ProfileStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.SackElementValueStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.SackObjectStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.SideEffectCapStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.StartStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.StoreStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.SubgraphStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.TreeStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.util.CollectingBarrierStep;
-import com.tinkerpop.gremlin.process.graph.traversal.step.util.PathIdentityStep;
-import com.tinkerpop.gremlin.process.graph.util.HasContainer;
-import com.tinkerpop.gremlin.process.traversal.lambda.ElementValueTraversal;
-import com.tinkerpop.gremlin.process.traversal.lambda.FilterTraversal;
-import com.tinkerpop.gremlin.process.traversal.lambda.FilterTraverserTraversal;
-import com.tinkerpop.gremlin.process.traversal.lambda.IdentityTraversal;
-import com.tinkerpop.gremlin.process.traversal.lambda.MapTraversal;
-import com.tinkerpop.gremlin.process.traversal.lambda.MapTraverserTraversal;
-import com.tinkerpop.gremlin.process.traversal.lambda.TrueTraversal;
-import com.tinkerpop.gremlin.process.traversal.step.ElementFunctionComparator;
-import com.tinkerpop.gremlin.process.traversal.step.ElementValueComparator;
-import com.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import com.tinkerpop.gremlin.process.util.TraverserSet;
-import com.tinkerpop.gremlin.structure.Compare;
-import com.tinkerpop.gremlin.structure.Contains;
-import com.tinkerpop.gremlin.structure.Direction;
-import com.tinkerpop.gremlin.structure.Edge;
-import com.tinkerpop.gremlin.structure.Element;
-import com.tinkerpop.gremlin.structure.Order;
-import com.tinkerpop.gremlin.structure.Property;
-import com.tinkerpop.gremlin.structure.PropertyType;
-import com.tinkerpop.gremlin.structure.Vertex;
-import com.tinkerpop.gremlin.util.function.ConstantSupplier;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Optional;
-import java.util.function.BiFunction;
-import java.util.function.BiPredicate;
-import java.util.function.BinaryOperator;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.function.Supplier;
-import java.util.function.UnaryOperator;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public interface GraphTraversal<S, E> extends Traversal<S, E> {
-
-    public interface Admin<S, E> extends Traversal.Admin<S, E>, GraphTraversal<S, E> {
-
-        @Override
-        public default <E2> GraphTraversal.Admin<S, E2> addStep(final Step<?, E2> step) {
-            return (GraphTraversal.Admin<S, E2>) Traversal.Admin.super.addStep((Step) step);
-        }
-
-        @Override
-        public default GraphTraversal<S, E> iterate() {
-            return GraphTraversal.super.iterate();
-        }
-
-        @Override
-        public GraphTraversal.Admin<S, E> clone() throws CloneNotSupportedException;
-    }
-
-    @Override
-    public default GraphTraversal<S, E> submit(final GraphComputer computer) {
-        try {
-            final TraversalVertexProgram vertexProgram = TraversalVertexProgram.build().traversal(this.asAdmin()).create();
-            final ComputerResult result = computer.program(vertexProgram).submit().get();
-            final GraphTraversal.Admin<S, S> traversal = new DefaultGraphTraversal<>(result.graph().getClass());
-            return traversal.addStep(new ComputerResultStep<>(traversal, result, vertexProgram, true));
-        } catch (final Exception e) {
-            throw new IllegalStateException(e.getMessage(), e);
-        }
-    }
-
-    @Override
-    public default GraphTraversal.Admin<S, E> asAdmin() {
-        return (GraphTraversal.Admin<S, E>) this;
-    }
-
-    ///////////////////// MAP STEPS /////////////////////
-
-    public default <E2> GraphTraversal<S, E2> map(final Function<Traverser<E>, E2> function) {
-        return this.asAdmin().addStep(new LambdaMapStep<>(this.asAdmin(), function));
-    }
-
-    public default <E2> GraphTraversal<S, E2> flatMap(final Function<Traverser<E>, Iterator<E2>> function) {
-        return this.asAdmin().addStep(new LambdaFlatMapStep<>(this.asAdmin(), function));
-    }
-
-    public default GraphTraversal<S, Object> id() {
-        return this.asAdmin().addStep(new IdStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, String> label() {
-        return this.asAdmin().addStep(new LabelStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, E> identity() {
-        return this.asAdmin().addStep(new IdentityStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, Vertex> to(final Direction direction, final String... edgeLabels) {
-        return this.asAdmin().addStep(new VertexStep<>(this.asAdmin(), Vertex.class, direction, edgeLabels));
-    }
-
-    public default GraphTraversal<S, Vertex> out(final String... edgeLabels) {
-        return this.to(Direction.OUT, edgeLabels);
-    }
-
-    public default GraphTraversal<S, Vertex> in(final String... edgeLabels) {
-        return this.to(Direction.IN, edgeLabels);
-    }
-
-    public default GraphTraversal<S, Vertex> both(final String... edgeLabels) {
-        return this.to(Direction.BOTH, edgeLabels);
-    }
-
-    public default GraphTraversal<S, Edge> toE(final Direction direction, final String... edgeLabels) {
-        return this.asAdmin().addStep(new VertexStep<>(this.asAdmin(), Edge.class, direction, edgeLabels));
-    }
-
-    public default GraphTraversal<S, Edge> outE(final String... edgeLabels) {
-        return this.toE(Direction.OUT, edgeLabels);
-    }
-
-    public default GraphTraversal<S, Edge> inE(final String... edgeLabels) {
-        return this.toE(Direction.IN, edgeLabels);
-    }
-
-    public default GraphTraversal<S, Edge> bothE(final String... edgeLabels) {
-        return this.toE(Direction.BOTH, edgeLabels);
-    }
-
-    public default GraphTraversal<S, Vertex> toV(final Direction direction) {
-        return this.asAdmin().addStep(new EdgeVertexStep(this.asAdmin(), direction));
-    }
-
-    public default GraphTraversal<S, Vertex> inV() {
-        return this.toV(Direction.IN);
-    }
-
-    public default GraphTraversal<S, Vertex> outV() {
-        return this.toV(Direction.OUT);
-    }
-
-    public default GraphTraversal<S, Vertex> bothV() {
-        return this.toV(Direction.BOTH);
-    }
-
-    public default GraphTraversal<S, Vertex> otherV() {
-        return this.asAdmin().addStep(new EdgeOtherVertexStep(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, E> order() {
-        return this.order(Scope.global);
-    }
-
-    public default GraphTraversal<S, E> order(final Scope scope) {
-        return scope.equals(Scope.local) ? this.asAdmin().addStep(new OrderLocalStep<>(this.asAdmin())) : this.asAdmin().addStep(new OrderGlobalStep<>(this.asAdmin()));
-    }
-
-    public default <E2> GraphTraversal<S, ? extends Property<E2>> properties(final String... propertyKeys) {
-        return this.asAdmin().addStep(new PropertiesStep<>(this.asAdmin(), PropertyType.PROPERTY, propertyKeys));
-    }
-
-    public default <E2> GraphTraversal<S, E2> values(final String... propertyKeys) {
-        return this.asAdmin().addStep(new PropertiesStep<>(this.asAdmin(), PropertyType.VALUE, propertyKeys));
-    }
-
-    public default <E2> GraphTraversal<S, Map<String, E2>> propertyMap(final String... propertyKeys) {
-        return this.asAdmin().addStep(new PropertyMapStep<>(this.asAdmin(), false, PropertyType.PROPERTY, propertyKeys));
-    }
-
-    public default <E2> GraphTraversal<S, Map<String, E2>> valueMap(final String... propertyKeys) {
-        return this.asAdmin().addStep(new PropertyMapStep<>(this.asAdmin(), false, PropertyType.VALUE, propertyKeys));
-    }
-
-    public default <E2> GraphTraversal<S, Map<String, E2>> valueMap(final boolean includeTokens, final String... propertyKeys) {
-        return this.asAdmin().addStep(new PropertyMapStep<>(this.asAdmin(), includeTokens, PropertyType.VALUE, propertyKeys));
-    }
-
-    public default GraphTraversal<S, String> key() {
-        return this.asAdmin().addStep(new KeyStep(this.asAdmin()));
-    }
-
-    public default <E2> GraphTraversal<S, E2> value() {
-        return this.asAdmin().addStep(new PropertyValueStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, Path> path() {
-        return this.asAdmin().addStep(new PathStep<>(this.asAdmin()));
-    }
-
-    public default <E2> GraphTraversal<S, E2> back(final String stepLabel) {
-        return this.asAdmin().addStep(new BackStep<>(this.asAdmin(), stepLabel));
-    }
-
-    public default <E2> GraphTraversal<S, Map<String, E2>> match(final String startLabel, final Traversal... traversals) {
-        return (GraphTraversal) this.asAdmin().addStep(new MatchStep<E, Map<String, E2>>(this.asAdmin(), startLabel, traversals));
-    }
-
-    public default <E2> GraphTraversal<S, E2> sack() {
-        return this.asAdmin().addStep(new SackStep<>(this.asAdmin()));
-    }
-
-    public default <E2> GraphTraversal<S, Map<String, E2>> select(final String... stepLabels) {
-        return this.asAdmin().addStep(new SelectStep<>(this.asAdmin(), stepLabels));
-    }
-
-    public default <E2> GraphTraversal<S, E2> select(final String stepLabel) {
-        return this.asAdmin().addStep(new SelectOneStep(this.asAdmin(), stepLabel));
-    }
-
-    public default <E2> GraphTraversal<S, E2> unfold() {
-        return this.asAdmin().addStep(new UnfoldStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, List<E>> fold() {
-        return this.asAdmin().addStep(new FoldStep<>(this.asAdmin()));
-    }
-
-    public default <E2> GraphTraversal<S, E2> fold(final E2 seed, final BiFunction<E2, E, E2> foldFunction) {
-        return this.asAdmin().addStep(new FoldStep<>(this.asAdmin(), new ConstantSupplier<>(seed), foldFunction)); // TODO: User should provide supplier?
-    }
-
-    public default GraphTraversal<S, Long> count() {
-        return this.asAdmin().addStep(new CountStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, Double> sum() {
-        return this.asAdmin().addStep(new SumStep(this.asAdmin()));
-    }
-
-    public default <E2 extends Number> GraphTraversal<S, E2> max() {
-        return this.asAdmin().addStep(new MaxStep<>(this.asAdmin()));
-    }
-
-    public default <E2 extends Number> GraphTraversal<S, E2> min() {
-        return this.asAdmin().addStep(new MinStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, Double> mean() {
-        return this.asAdmin().addStep(new MeanStep<>(this.asAdmin()));
-    }
-
-    ///////////////////// FILTER STEPS /////////////////////
-
-    public default GraphTraversal<S, E> filter(final Predicate<Traverser<E>> predicate) {
-        return this.asAdmin().addStep(new LambdaFilterStep<>(this.asAdmin(), predicate));
-    }
-
-    public default GraphTraversal<S, E> or(final Traversal<?, ?>... orTraversals) {
-        return this.asAdmin().addStep(0 == orTraversals.length ?
-                new OrStep.OrMarker<>(this.asAdmin()) :
-                new OrStep(this.asAdmin(), Arrays.copyOf(orTraversals, orTraversals.length, Traversal.Admin[].class)));
-    }
-
-    public default GraphTraversal<S, E> and(final Traversal<?, ?>... andTraversals) {
-        return this.asAdmin().addStep(0 == andTraversals.length ?
-                new AndStep.AndMarker<>(this.asAdmin()) :
-                new AndStep(this.asAdmin(), Arrays.copyOf(andTraversals, andTraversals.length, Traversal.Admin[].class)));
-    }
-
-    public default GraphTraversal<S, E> inject(final E... injections) {
-        return this.asAdmin().addStep(new InjectStep<>(this.asAdmin(), injections));
-    }
-
-    public default GraphTraversal<S, E> dedup() {
-        return this.asAdmin().addStep(new DedupStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, E> except(final String sideEffectKeyOrPathLabel) {
-        return this.asAdmin().addStep(new ExceptStep<E>(this.asAdmin(), sideEffectKeyOrPathLabel));
-    }
-
-    public default GraphTraversal<S, E> except(final E exceptObject) {
-        return this.asAdmin().addStep(new ExceptStep<>(this.asAdmin(), exceptObject));
-    }
-
-    public default GraphTraversal<S, E> except(final Collection<E> exceptCollection) {
-        return this.asAdmin().addStep(new ExceptStep<>(this.asAdmin(), exceptCollection));
-    }
-
-    public default <E2> GraphTraversal<S, Map<String, E2>> where(final String firstKey, final String secondKey, final BiPredicate predicate) {
-        return this.asAdmin().addStep(new WhereStep(this.asAdmin(), firstKey, secondKey, predicate));
-    }
-
-    public default <E2> GraphTraversal<S, Map<String, E2>> where(final String firstKey, final BiPredicate predicate, final String secondKey) {
-        return this.where(firstKey, secondKey, predicate);
-    }
-
-    public default <E2> GraphTraversal<S, Map<String, E2>> where(final Traversal constraint) {
-        return this.asAdmin().addStep(new WhereStep<>(this.asAdmin(), constraint.asAdmin()));
-    }
-
-    public default GraphTraversal<S, E> has(final Traversal<?, ?> hasNextTraversal) {
-        return this.asAdmin().addStep(new HasTraversalStep<>(this.asAdmin(), (Traversal.Admin<E, ?>) hasNextTraversal));
-    }
-
-    public default GraphTraversal<S, E> has(final String key) {
-        return this.asAdmin().addStep(new HasStep(this.asAdmin(), new HasContainer(key, Contains.within)));
-    }
-
-    public default GraphTraversal<S, E> has(final String key, final Object value) {
-        return this.has(key, Compare.eq, value);
-    }
-
-    public default GraphTraversal<S, E> has(final T accessor, final Object value) {
-        return this.has(accessor.getAccessor(), value);
-    }
-
-    public default GraphTraversal<S, E> has(final String key, final BiPredicate predicate, final Object value) {
-        return this.asAdmin().addStep(new HasStep(this.asAdmin(), new HasContainer(key, predicate, value)));
-    }
-
-    public default GraphTraversal<S, E> has(final T accessor, final BiPredicate predicate, final Object value) {
-        return this.has(accessor.getAccessor(), predicate, value);
-    }
-
-    public default GraphTraversal<S, E> has(final String label, final String key, final Object value) {
-        return this.has(label, key, Compare.eq, value);
-    }
-
-    public default GraphTraversal<S, E> has(final String label, final String key, final BiPredicate predicate, final Object value) {
-        return this.has(T.label, label).has(key, predicate, value);
-    }
-
-    public default GraphTraversal<S, E> hasNot(final String key) {
-        return this.asAdmin().addStep(new HasStep(this.asAdmin(), new HasContainer(key, Contains.without)));
-    }
-
-    public default GraphTraversal<S, E> hasLabel(final String... labels) {
-        return labels.length == 1 ? this.has(T.label, labels[0]) : this.has(T.label, Contains.within, Arrays.asList(labels));
-    }
-
-    public default GraphTraversal<S, E> hasId(final Object... ids) {
-        return ids.length == 1 ? this.has(T.id, ids[0]) : this.has(T.id, Contains.within, Arrays.asList(ids));
-    }
-
-    public default GraphTraversal<S, E> hasKey(final String... keys) {
-        return keys.length == 1 ? this.has(T.key, keys[0]) : this.has(T.key, Contains.within, Arrays.asList(keys));
-    }
-
-    public default GraphTraversal<S, E> hasValue(final Object... values) {
-        return values.length == 1 ? this.has(T.value, values[0]) : this.has(T.value, Contains.within, Arrays.asList(values));
-    }
-
-    public default GraphTraversal<S, E> is(final Object value) {
-        return this.is(Compare.eq, value);
-    }
-
-    public default GraphTraversal<S, E> is(final BiPredicate predicate, final Object value) {
-        return this.asAdmin().addStep(new IsStep(this.asAdmin(), predicate, value));
-    }
-
-    public default GraphTraversal<S, E> coin(final double probability) {
-        return this.asAdmin().addStep(new CoinStep<>(this.asAdmin(), probability));
-    }
-
-    public default GraphTraversal<S, E> range(final long low, final long high) {
-        return this.asAdmin().addStep(new RangeStep<>(this.asAdmin(), low, high));
-    }
-
-    public default GraphTraversal<S, E> limit(final long limit) {
-        return this.range(0, limit);
-    }
-
-    public default GraphTraversal<S, E> retain(final String sideEffectKeyOrPathLabel) {
-        return this.asAdmin().addStep(new RetainStep<>(this.asAdmin(), sideEffectKeyOrPathLabel));
-    }
-
-    public default GraphTraversal<S, E> retain(final E retainObject) {
-        return this.asAdmin().addStep(new RetainStep<>(this.asAdmin(), retainObject));
-    }
-
-    public default GraphTraversal<S, E> retain(final Collection<E> retainCollection) {
-        return this.asAdmin().addStep(new RetainStep<>(this.asAdmin(), retainCollection));
-    }
-
-    public default GraphTraversal<S, E> simplePath() {
-        return this.asAdmin().addStep(new SimplePathStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, E> cyclicPath() {
-        return this.asAdmin().addStep(new CyclicPathStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, E> sample(final int amountToSample) {
-        return this.asAdmin().addStep(new SampleStep<>(this.asAdmin(), amountToSample));
-    }
-
-    ///////////////////// SIDE-EFFECT STEPS /////////////////////
-
-    public default GraphTraversal<S, E> sideEffect(final Consumer<Traverser<E>> consumer) {
-        return this.asAdmin().addStep(new LambdaSideEffectStep<>(this.asAdmin(), consumer));
-    }
-
-    public default <E2> GraphTraversal<S, E2> cap(final String... sideEffectKeys) {
-        return this.asAdmin().addStep(new SideEffectCapStep<>(this.asAdmin(), sideEffectKeys));
-    }
-
-    public default GraphTraversal<S, Edge> subgraph(final String sideEffectKey) {
-        return this.asAdmin().addStep(new SubgraphStep(this.asAdmin(), sideEffectKey));
-    }
-
-    public default GraphTraversal<S, Edge> subgraph() {
-        return this.subgraph(null);
-    }
-
-    public default GraphTraversal<S, E> aggregate(final String sideEffectKey) {
-        return this.asAdmin().addStep(new AggregateStep<>(this.asAdmin(), sideEffectKey));
-    }
-
-    public default GraphTraversal<S, E> aggregate() {
-        return this.aggregate(null);
-    }
-
-    public default GraphTraversal<S, E> group(final String sideEffectKey) {
-        return this.asAdmin().addStep(new GroupStep<>(this.asAdmin(), sideEffectKey));
-    }
-
-    public default GraphTraversal<S, E> group() {
-        return this.group(null);
-    }
-
-    public default GraphTraversal<S, E> groupCount(final String sideEffectKey) {
-        return this.asAdmin().addStep(new GroupCountStep<>(this.asAdmin(), sideEffectKey));
-    }
-
-    public default GraphTraversal<S, E> groupCount() {
-        return this.groupCount(null);
-    }
-
-    public default GraphTraversal<S, Vertex> addE(final Direction direction, final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
-        return this.asAdmin().addStep(new AddEdgeStep(this.asAdmin(), direction, edgeLabel, stepLabel, propertyKeyValues));
-    }
-
-    public default GraphTraversal<S, Vertex> addInE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
-        return this.addE(Direction.IN, edgeLabel, stepLabel, propertyKeyValues);
-    }
-
-    public default GraphTraversal<S, Vertex> addOutE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
-        return this.addE(Direction.OUT, edgeLabel, stepLabel, propertyKeyValues);
-    }
-
-    public default GraphTraversal<S, Vertex> addBothE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
-        return this.addE(Direction.BOTH, edgeLabel, stepLabel, propertyKeyValues);
-    }
-
-    public default GraphTraversal<S, E> timeLimit(final long timeLimit) {
-        return this.asAdmin().addStep(new TimeLimitStep<E>(this.asAdmin(), timeLimit));
-    }
-
-    public default GraphTraversal<S, E> tree(final String sideEffectKey) {
-        return this.asAdmin().addStep(new TreeStep<>(this.asAdmin(), sideEffectKey));
-    }
-
-    public default GraphTraversal<S, E> tree() {
-        return this.tree(null);
-    }
-
-    public default <V> GraphTraversal<S, E> sack(final BiFunction<V, E, V> sackFunction) {
-        return this.asAdmin().addStep(new SackObjectStep<>(this.asAdmin(), sackFunction));
-    }
-
-    public default <V> GraphTraversal<S, E> sack(final BinaryOperator<V> sackOperator, final String elementPropertyKey) {
-        return this.asAdmin().addStep(new SackElementValueStep(this.asAdmin(), sackOperator, elementPropertyKey));
-    }
-
-    public default GraphTraversal<S, E> store(final String sideEffectKey) {
-        return this.asAdmin().addStep(new StoreStep<>(this.asAdmin(), sideEffectKey));
-    }
-
-    public default GraphTraversal<S, E> store() {
-        return this.store(null);
-    }
-
-    public default GraphTraversal<S, E> profile() {
-        return this.asAdmin().addStep(new ProfileStep<>(this.asAdmin()));
-    }
-
-    ///////////////////// BRANCH STEPS /////////////////////
-
-    public default <M, E2> GraphTraversal<S, E2> branch(final Traversal<?, M> branchTraversal) {
-        final BranchStep<E, E2, M> branchStep = new BranchStep<>(this.asAdmin());
-        branchStep.setBranchTraversal((Traversal.Admin<E, M>) branchTraversal);
-        return this.asAdmin().addStep(branchStep);
-    }
-
-    public default <M, E2> GraphTraversal<S, E2> branch(final Function<Traverser<E>, M> function) {
-        return this.branch(new MapTraverserTraversal<>(function));
-    }
-
-    public default <M, E2> GraphTraversal<S, E2> choose(final Traversal<?, M> choiceTraversal) {
-        return this.asAdmin().addStep(new ChooseStep<>(this.asAdmin(), (Traversal.Admin<E, M>) choiceTraversal));
-    }
-
-    public default <E2> GraphTraversal<S, E2> choose(final Traversal<?, ?> traversalPredicate, final Traversal<?, E2> trueChoice, final Traversal<?, E2> falseChoice) {
-        return this.asAdmin().addStep(new ChooseStep<E, E2, Boolean>(this.asAdmin(), (Traversal.Admin<E, ?>) traversalPredicate, (Traversal.Admin<E, E2>) trueChoice, (Traversal.Admin<E, E2>) falseChoice));
-    }
-
-    public default <M, E2> GraphTraversal<S, E2> choose(final Function<E, M> choiceFunction) {
-        return this.choose(new MapTraversal<>(choiceFunction));
-    }
-
-    public default <E2> GraphTraversal<S, E2> choose(final Predicate<E> choosePredicate, final Traversal<?, E2> trueChoice, final Traversal<?, E2> falseChoice) {
-        return this.choose(new FilterTraversal<>(choosePredicate), trueChoice, falseChoice);
-    }
-
-    public default <E2> GraphTraversal<S, E2> union(final Traversal<?, E2>... unionTraversals) {
-        return this.asAdmin().addStep(new UnionStep(this.asAdmin(), Arrays.copyOf(unionTraversals, unionTraversals.length, Traversal.Admin[].class)));
-    }
-
-    public default <E2> GraphTraversal<S, E2> coalesce(final Traversal<?, E2>... coalesceTraversals) {
-        return this.asAdmin().addStep(new CoalesceStep(this.asAdmin(), Arrays.copyOf(coalesceTraversals, coalesceTraversals.length, Traversal.Admin[].class)));
-    }
-
-    public default GraphTraversal<S, E> repeat(final Traversal<?, E> repeatTraversal) {
-        return RepeatStep.addRepeatToTraversal(this, (Traversal.Admin<E, E>) repeatTraversal);
-    }
-
-    public default GraphTraversal<S, E> emit(final Traversal<?, ?> emitTraversal) {
-        return RepeatStep.addEmitToTraversal(this, (Traversal.Admin<E, ?>) emitTraversal);
-    }
-
-    public default GraphTraversal<S, E> emit(final Predicate<Traverser<E>> emitPredicate) {
-        return this.emit(new FilterTraverserTraversal<>(emitPredicate));
-    }
-
-    public default GraphTraversal<S, E> emit() {
-        return this.emit(TrueTraversal.instance());
-    }
-
-    public default GraphTraversal<S, E> until(final Traversal<?, ?> untilTraversal) {
-        return RepeatStep.addUntilToTraversal(this, (Traversal.Admin<E, ?>) untilTraversal);
-    }
-
-    public default GraphTraversal<S, E> until(final Predicate<Traverser<E>> untilPredicate) {
-        return this.until(new FilterTraverserTraversal<>(untilPredicate));
-    }
-
-    public default GraphTraversal<S, E> times(final int maxLoops) {
-        return this.until(new LoopTraversal(maxLoops));
-    }
-
-    public default <E2> GraphTraversal<S, E2> local(final Traversal<?, E2> localTraversal) {
-        return this.asAdmin().addStep(new LocalStep<>(this.asAdmin(), localTraversal.asAdmin()));
-    }
-
-    ///////////////////// UTILITY STEPS /////////////////////
-
-    public default GraphTraversal<S, E> withSideEffect(final String key, final Supplier supplier) {
-        this.asAdmin().getSideEffects().registerSupplier(key, supplier);
-        return this;
-    }
-
-    public default <A> GraphTraversal<S, E> withSack(final Supplier<A> initialValue, final UnaryOperator<A> splitOperator) {
-        this.asAdmin().getSideEffects().setSack(initialValue, Optional.of(splitOperator));
-        return this;
-    }
-
-    public default <A> GraphTraversal<S, E> withSack(final Supplier<A> initialValue) {
-        this.asAdmin().getSideEffects().setSack(initialValue, Optional.empty());
-        return this;
-    }
-
-    public default <A> GraphTraversal<S, E> withSack(final A initialValue, final UnaryOperator<A> splitOperator) {
-        this.asAdmin().getSideEffects().setSack(new ConstantSupplier<>(initialValue), Optional.of(splitOperator));
-        return this;
-    }
-
-    public default <A> GraphTraversal<S, E> withSack(A initialValue) {
-        this.asAdmin().getSideEffects().setSack(new ConstantSupplier<>(initialValue), Optional.empty());
-        return this;
-    }
-
-    public default GraphTraversal<S, E> withPath() {
-        return this.asAdmin().addStep(new PathIdentityStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, E> as(final String stepLabel) {
-        if (this.asAdmin().getSteps().size() == 0) this.asAdmin().addStep(new StartStep<>(this.asAdmin()));
-        this.asAdmin().getEndStep().setLabel(stepLabel);
-        return this;
-    }
-
-    public default GraphTraversal<S, E> barrier() {
-        return this.asAdmin().addStep(new CollectingBarrierStep(asAdmin()) {
-            @Override
-            public void barrierConsumer(TraverserSet traverserSet) {
-
-            }
-        });
-    }
-
-    ////
-
-    public default GraphTraversal<S, E> by() {
-        ((TraversalParent) this.asAdmin().getEndStep()).addLocalChild(new IdentityTraversal<>());
-        return this;
-    }
-
-    public default <V> GraphTraversal<S, E> by(final Function<V, Object> functionProjection) {
-        ((TraversalParent) this.asAdmin().getEndStep()).addLocalChild(new MapTraversal<>(functionProjection));
-        return this;
-    }
-
-    public default GraphTraversal<S, E> by(final T tokenProjection) {
-        ((TraversalParent) this.asAdmin().getEndStep()).addLocalChild(new MapTraversal<>(tokenProjection));
-        return this;
-    }
-
-    public default GraphTraversal<S, E> by(final String elementPropertyKey) {
-        ((TraversalParent) this.asAdmin().getEndStep()).addLocalChild(new ElementValueTraversal<>(elementPropertyKey));
-        return this;
-    }
-
-    public default GraphTraversal<S, E> by(final Traversal<?, ?> byTraversal) {
-        ((TraversalParent) this.asAdmin().getEndStep()).addLocalChild(byTraversal.asAdmin());
-        return this;
-    }
-
-    ////
-
-    public default GraphTraversal<S, E> by(final Order order) {
-        ((ComparatorHolder) this.asAdmin().getEndStep()).addComparator(order);
-        return this;
-    }
-
-    public default GraphTraversal<S, E> by(final Comparator<E> comparator) {
-        ((ComparatorHolder<E>) this.asAdmin().getEndStep()).addComparator(comparator);
-        return this;
-    }
-
-    public default <V> GraphTraversal<S, E> by(final Function<Element, V> elementFunctionProjection, final Comparator<V> elementFunctionValueComparator) {
-        ((ComparatorHolder<Element>) this.asAdmin().getEndStep()).addComparator(new ElementFunctionComparator<>(elementFunctionProjection, elementFunctionValueComparator));
-        return this;
-    }
-
-    public default <V> GraphTraversal<S, E> by(final String elementPropertyProjection, final Comparator<V> propertyValueComparator) {
-        ((ComparatorHolder<Element>) this.asAdmin().getEndStep()).addComparator(new ElementValueComparator<>(elementPropertyProjection, propertyValueComparator));
-        return this;
-    }
-
-    ////
-
-    public default <M, E2> GraphTraversal<S, E> option(final M pickToken, final Traversal<E, E2> traversalOption) {
-        ((TraversalOptionParent<M, E, E2>) this.asAdmin().getEndStep()).addGlobalChildOption(pickToken, traversalOption.asAdmin());
-        return this;
-    }
-
-    public default <E2> GraphTraversal<S, E> option(final Traversal<E, E2> traversalOption) {
-        ((TraversalOptionParent<TraversalOptionParent.Pick, E, E2>) this.asAdmin().getEndStep()).addGlobalChildOption(TraversalOptionParent.Pick.any, traversalOption.asAdmin());
-        return this;
-    }
-
-    ////
-
-    @Override
-    public default void remove() {
-        try {
-            this.asAdmin().applyStrategies(TraversalEngine.STANDARD);
-            final Step<?, E> endStep = this.asAdmin().getEndStep();
-            while (true) {
-                final Object object = endStep.next().get();
-                if (object instanceof Element)
-                    ((Element) object).remove();
-                else if (object instanceof Property)
-                    ((Property) object).remove();
-                else {
-                    throw new IllegalStateException("The following object does not have a remove() method: " + object);
-                }
-            }
-        } catch (final NoSuchElementException ignored) {
-
-        }
-    }
-
-    @Override
-    public default GraphTraversal<S, E> iterate() {
-        Traversal.super.iterate();
-        return this;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/VertexPropertyTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/VertexPropertyTraversal.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/VertexPropertyTraversal.java
deleted file mode 100644
index be0f293..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/VertexPropertyTraversal.java
+++ /dev/null
@@ -1,54 +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 com.tinkerpop.gremlin.process.graph.traversal;
-
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.StartStep;
-import com.tinkerpop.gremlin.structure.Property;
-import com.tinkerpop.gremlin.structure.VertexProperty;
-
-import java.util.Map;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public interface VertexPropertyTraversal extends ElementTraversal<VertexProperty> {
-
-    @Override
-    default GraphTraversal<VertexProperty, VertexProperty> start() {
-        final GraphTraversal.Admin<VertexProperty, VertexProperty> traversal = new DefaultGraphTraversal<>(this.getClass());
-        return traversal.addStep(new StartStep<>(traversal, this));
-    }
-
-    @Override
-    public default <E2> GraphTraversal<VertexProperty, Property<E2>> properties(final String... propertyKeys) {
-        return (GraphTraversal) this.start().properties(propertyKeys);
-    }
-
-    public default <E2> GraphTraversal<VertexProperty, Map<String, Property<E2>>> propertyMap(final String... propertyKeys) {
-        return this.start().propertyMap(propertyKeys);
-    }
-
-    public default <E2> GraphTraversal<VertexProperty, Map<String, E2>> valueMap(final String... propertyKeys) {
-        return this.start().valueMap(propertyKeys);
-    }
-
-    public default <E2> GraphTraversal<VertexProperty, Map<String, E2>> valueMap(final boolean includeTokens, final String... propertyKeys) {
-        return this.start().valueMap(includeTokens, propertyKeys);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/VertexTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/VertexTraversal.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/VertexTraversal.java
deleted file mode 100644
index 9bc0c9b..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/VertexTraversal.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 com.tinkerpop.gremlin.process.graph.traversal;
-
-import com.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.StartStep;
-import com.tinkerpop.gremlin.structure.Vertex;
-import com.tinkerpop.gremlin.structure.VertexProperty;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public interface VertexTraversal extends ElementTraversal<Vertex> {
-
-    @Override
-    default GraphTraversal<Vertex, Vertex> start() {
-        final GraphTraversal.Admin<Vertex, Vertex> traversal = new DefaultGraphTraversal<>(this.getClass());
-        return traversal.addStep(new StartStep<>(traversal, this));
-    }
-
-    @Override
-    public default <E2> GraphTraversal<Vertex, VertexProperty<E2>> properties(final String... propertyKeys) {
-        return (GraphTraversal) this.start().properties(propertyKeys);
-    }
-
-    public default <E2> GraphTraversal<Vertex, Map<String, List<VertexProperty<E2>>>> propertyMap(final String... propertyKeys) {
-        return this.start().propertyMap(propertyKeys);
-    }
-
-    public default <E2> GraphTraversal<Vertex, Map<String, List<E2>>> valueMap(final String... propertyKeys) {
-        return this.start().valueMap(propertyKeys);
-    }
-
-    public default <E2> GraphTraversal<Vertex, Map<String, List<E2>>> valueMap(final boolean includeTokens, final String... propertyKeys) {
-        return this.start().valueMap(includeTokens, propertyKeys);
-    }
-
-    // necessary so VertexProperty.value() as a non-traversal method works
-    public default <E2> GraphTraversal<Vertex, E2> value() {
-        return this.start().value();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/__.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/__.java
deleted file mode 100644
index 3fc0491..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/__.java
+++ /dev/null
@@ -1,570 +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 com.tinkerpop.gremlin.process.graph.traversal;
-
-import com.tinkerpop.gremlin.process.Path;
-import com.tinkerpop.gremlin.process.Scope;
-import com.tinkerpop.gremlin.process.T;
-import com.tinkerpop.gremlin.process.Traversal;
-import com.tinkerpop.gremlin.process.Traverser;
-import com.tinkerpop.gremlin.process.computer.GraphComputer;
-import com.tinkerpop.gremlin.structure.Direction;
-import com.tinkerpop.gremlin.structure.Edge;
-import com.tinkerpop.gremlin.structure.Property;
-import com.tinkerpop.gremlin.structure.Vertex;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.function.BiFunction;
-import java.util.function.BiPredicate;
-import java.util.function.BinaryOperator;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.function.Supplier;
-import java.util.function.UnaryOperator;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class __ {
-
-    protected __() {
-    }
-
-    //////////////////////////////////////////////////////////////////////
-
-    public static <A> GraphTraversal<A, A> start() {
-        return new DefaultGraphTraversal<>(__.class);
-    }
-
-    //////////////////////////////////////////////////////////////////////
-
-    public static <A> GraphTraversal<A, A> submit(final GraphComputer graphComputer) {
-        return __.<A>start().submit(graphComputer);
-    }
-
-    ///////////////////// MAP STEPS /////////////////////
-
-    public static <A, E2> GraphTraversal<A, E2> map(final Function<Traverser<A>, E2> function) {
-        return __.<A>start().map(function);
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> flatMap(final Function<Traverser<A>, Iterator<E2>> function) {
-        return __.<A>start().flatMap(function);
-    }
-
-    public static <A> GraphTraversal<A, A> identity() {
-        return __.<A>start().identity();
-    }
-
-    public static <A> GraphTraversal<A, String> label() {
-        return __.<A>start().label();
-    }
-
-    public static <A> GraphTraversal<A, Object> id() {
-        return __.<A>start().id();
-    }
-
-    public static <A> GraphTraversal<A, Vertex> to(final Direction direction, final String... edgeLabels) {
-        return __.<A>start().to(direction, edgeLabels);
-    }
-
-    public static <A> GraphTraversal<A, Vertex> out(final String... edgeLabels) {
-        return __.<A>start().out(edgeLabels);
-    }
-
-    public static <A> GraphTraversal<A, Vertex> in(final String... edgeLabels) {
-        return __.<A>start().in(edgeLabels);
-    }
-
-    public static <A> GraphTraversal<A, Vertex> both(final String... edgeLabels) {
-        return __.<A>start().both(edgeLabels);
-    }
-
-    public static <A> GraphTraversal<A, Edge> toE(final Direction direction, final String... edgeLabels) {
-        return __.<A>start().toE(direction, edgeLabels);
-    }
-
-    public static <A> GraphTraversal<A, Edge> outE(final String... edgeLabels) {
-        return __.<A>start().outE(edgeLabels);
-    }
-
-    public static <A> GraphTraversal<A, Edge> inE(final String... edgeLabels) {
-        return __.<A>start().inE(edgeLabels);
-    }
-
-    public static <A> GraphTraversal<A, Edge> bothE(final String... edgeLabels) {
-        return __.<A>start().bothE(edgeLabels);
-    }
-
-    public static <A> GraphTraversal<A, Vertex> toV(final Direction direction) {
-        return __.<A>start().toV(direction);
-    }
-
-    public static <A> GraphTraversal<A, Vertex> inV() {
-        return __.<A>start().inV();
-    }
-
-    public static <A> GraphTraversal<A, Vertex> outV() {
-        return __.<A>start().outV();
-    }
-
-    public static <A> GraphTraversal<A, Vertex> bothV() {
-        return __.<A>start().bothV();
-    }
-
-    public static <A> GraphTraversal<A, Vertex> otherV() {
-        return __.<A>start().otherV();
-    }
-
-    public static <A> GraphTraversal<A, A> order() {
-        return __.<A>start().order();
-    }
-
-    public static <A> GraphTraversal<A, A> order(final Scope scope) {
-        return __.<A>start().order(scope);
-    }
-
-    public static <A, E2> GraphTraversal<A, ? extends Property<E2>> properties(final String... propertyKeys) {
-        return __.<A>start().properties(propertyKeys);
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> values(final String... propertyKeys) {
-        return __.<A>start().values(propertyKeys);
-    }
-
-    public static <A, E2> GraphTraversal<A, Map<String, E2>> propertyMap(final String... propertyKeys) {
-        return __.<A>start().propertyMap(propertyKeys);
-    }
-
-    public static <A, E2> GraphTraversal<A, Map<String, E2>> valueMap(final String... propertyKeys) {
-        return __.<A>start().valueMap(propertyKeys);
-    }
-
-    public static <A, E2> GraphTraversal<A, Map<String, E2>> valueMap(final boolean includeTokens, final String... propertyKeys) {
-        return __.<A>start().valueMap(includeTokens, propertyKeys);
-    }
-
-    public static <A> GraphTraversal<A, String> key() {
-        return __.<A>start().key();
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> value() {
-        return __.<A>start().value();
-    }
-
-    public static <A> GraphTraversal<A, Path> path() {
-        return __.<A>start().path();
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> back(final String stepLabel) {
-        return __.<A>start().back(stepLabel);
-    }
-
-    public static <A, E2> GraphTraversal<A, Map<String, E2>> match(final String startLabel, final Traversal... traversals) {
-        return __.<A>start().match(startLabel, traversals);
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> sack() {
-        return __.<A>start().sack();
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> select(final String stepLabel) {
-        return __.<A>start().select(stepLabel);
-    }
-
-    public static <A, E2> GraphTraversal<A, Map<String, E2>> select(final String... stepLabels) {
-        return __.<A>start().select(stepLabels);
-    }
-
-    public static <A> GraphTraversal<A, A> unfold() {
-        return __.<A>start().unfold();
-    }
-
-    public static <A> GraphTraversal<A, List<A>> fold() {
-        return __.<A>start().fold();
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> fold(final E2 seed, final BiFunction<E2, A, E2> foldFunction) {
-        return __.<A>start().fold(seed, foldFunction);
-    }
-
-    public static <A> GraphTraversal<A, Long> count() {
-        return __.<A>start().count();
-    }
-
-    public static <A> GraphTraversal<A, Double> sum() {
-        return __.<A>start().sum();
-    }
-
-    public static <A, E2 extends Number> GraphTraversal<A, E2> min() {
-        return __.<A>start().min();
-    }
-
-    public static <A, E2 extends Number> GraphTraversal<A, E2> max() {
-        return __.<A>start().max();
-    }
-
-    public static <A> GraphTraversal<A, Double> mean() {
-        return __.<A>start().mean();
-    }
-
-    ///////////////////// FILTER STEPS /////////////////////
-
-    public static <A> GraphTraversal<A, A> filter(final Predicate<Traverser<A>> predicate) {
-        return __.<A>start().filter(predicate);
-    }
-
-    public static <A> GraphTraversal<A, A> and(final Traversal<?, ?>... andTraversals) {
-        return __.<A>start().and(andTraversals);
-    }
-
-    public static <A> GraphTraversal<A, A> or(final Traversal<?, ?>... orTraversals) {
-        return __.<A>start().or(orTraversals);
-    }
-
-    public static <A> GraphTraversal<A, A> inject(final Object... injections) {
-        return __.<A>start().inject((A[]) injections);
-    }
-
-    public static <A> GraphTraversal<A, A> dedup() {
-        return __.<A>start().dedup();
-    }
-
-    public static <A> GraphTraversal<A, A> except(final String sideEffectKeyOrPathLabel) {
-        return __.<A>start().except(sideEffectKeyOrPathLabel);
-    }
-
-    public static <A> GraphTraversal<A, A> except(final Object exceptObject) {
-        return __.<A>start().except((A) exceptObject);
-    }
-
-    public static <A> GraphTraversal<A, A> except(final Collection<A> exceptCollection) {
-        return __.<A>start().except(exceptCollection);
-    }
-
-    public static <A> GraphTraversal<A, A> has(final Traversal<?, ?> hasNextTraversal) {
-        return __.<A>start().has(hasNextTraversal);
-    }
-
-    public static <A> GraphTraversal<A, A> has(final String key) {
-        return __.<A>start().has(key);
-    }
-
-    public static <A> GraphTraversal<A, A> has(final String key, final Object value) {
-        return __.<A>start().has(key, value);
-    }
-
-    public static <A> GraphTraversal<A, A> has(final T accessor, final Object value) {
-        return __.<A>start().has(accessor, value);
-    }
-
-    public static <A> GraphTraversal<A, A> has(final String key, final BiPredicate predicate, final Object value) {
-        return __.<A>start().has(key, predicate, value);
-    }
-
-    public static <A> GraphTraversal<A, A> has(final T accessor, final BiPredicate predicate, final Object value) {
-        return __.<A>start().has(accessor, predicate, value);
-    }
-
-    public static <A> GraphTraversal<A, A> has(final String label, final String key, final Object value) {
-        return __.<A>start().has(label, key, value);
-    }
-
-    public static <A> GraphTraversal<A, A> has(final String label, final String key, final BiPredicate predicate, final Object value) {
-        return __.<A>start().has(label, key, predicate, value);
-    }
-
-    public static <A> GraphTraversal<A, A> hasNot(final String key) {
-        return __.<A>start().hasNot(key);
-    }
-
-    public static <A> GraphTraversal<A, A> hasLabel(final String... labels) {
-        return __.<A>start().hasLabel(labels);
-    }
-
-    public static <A> GraphTraversal<A, A> hasId(final Object... ids) {
-        return __.<A>start().hasId(ids);
-    }
-
-    public static <A> GraphTraversal<A, A> hasKey(final String... keys) {
-        return __.<A>start().hasKey(keys);
-    }
-
-    public static <A> GraphTraversal<A, A> hasValue(final Object... values) {
-        return __.<A>start().hasValue(values);
-    }
-
-    public static <A, E2> GraphTraversal<A, Map<String, E2>> where(final String firstKey, final String secondKey, final BiPredicate predicate) {
-        return __.<A>start().where(firstKey, secondKey, predicate);
-    }
-
-    public static <A, E2> GraphTraversal<A, Map<String, E2>> where(final String firstKey, final BiPredicate predicate, final String secondKey) {
-        return __.<A>start().where(firstKey, predicate, secondKey);
-    }
-
-    public static <A, E2> GraphTraversal<A, Map<String, E2>> where(final Traversal constraint) {
-        return __.<A>start().where(constraint);
-    }
-
-    public static <A> GraphTraversal<A, A> is(final Object value) {
-        return __.<A>start().is(value);
-    }
-
-    public static <A> GraphTraversal<A, A> is(final BiPredicate predicate, final Object value) {
-        return __.<A>start().is(predicate, value);
-    }
-
-    public static <A> GraphTraversal<A, A> coin(final double probability) {
-        return __.<A>start().coin(probability);
-    }
-
-    public static <A> GraphTraversal<A, A> range(final long low, final long high) {
-        return __.<A>start().range(low, high);
-    }
-
-    public static <A> GraphTraversal<A, A> limit(final long limit) {
-        return __.<A>start().limit(limit);
-    }
-
-    public static <A> GraphTraversal<A, A> retain(final String sideEffectKeyOrPathLabel) {
-        return __.<A>start().retain(sideEffectKeyOrPathLabel);
-    }
-
-    public static <A> GraphTraversal<A, A> retain(final Object retainObject) {
-        return __.<A>start().retain((A) retainObject);
-    }
-
-    public static <A> GraphTraversal<A, A> retain(final Collection<A> retainCollection) {
-        return __.<A>start().retain(retainCollection);
-    }
-
-    public static <A> GraphTraversal<A, A> simplePath() {
-        return __.<A>start().simplePath();
-    }
-
-    public static <A> GraphTraversal<A, A> cyclicPath() {
-        return __.<A>start().cyclicPath();
-    }
-
-    public static <A> GraphTraversal<A, A> sample(final int amountToSample) {
-        return __.<A>start().sample(amountToSample);
-    }
-
-    ///////////////////// SIDE-EFFECT STEPS /////////////////////
-
-    public static <A> GraphTraversal<A, A> sideEffect(final Consumer<Traverser<A>> consumer) {
-        return __.<A>start().sideEffect(consumer);
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> cap(final String... sideEffectKeys) {
-        return __.<A>start().cap(sideEffectKeys);
-    }
-
-    public static <A> GraphTraversal<A, Edge> subgraph(final String sideEffectKey) {
-        return __.<A>start().subgraph(sideEffectKey);
-    }
-
-    public static <A> GraphTraversal<A, Edge> subgraph() {
-        return __.<A>start().subgraph();
-    }
-
-    public static <A> GraphTraversal<A, A> aggregate(final String sideEffectKey) {
-        return __.<A>start().aggregate(sideEffectKey);
-    }
-
-    public static <A> GraphTraversal<A, A> aggregate() {
-        return __.<A>start().aggregate();
-    }
-
-    public static <A> GraphTraversal<A, A> group(final String sideEffectKey) {
-        return __.<A>start().group(sideEffectKey);
-    }
-
-    public static <A> GraphTraversal<A, A> group() {
-        return __.<A>start().group();
-    }
-
-    public static <A> GraphTraversal<A, A> groupCount(final String sideEffectKey) {
-        return __.<A>start().groupCount(sideEffectKey);
-    }
-
-    public static <A> GraphTraversal<A, A> groupCount() {
-        return __.<A>start().groupCount();
-    }
-
-    public static <A> GraphTraversal<A, Vertex> addE(final Direction direction, final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
-        return __.<A>start().addE(direction, edgeLabel, stepLabel, propertyKeyValues);
-    }
-
-    public static <A> GraphTraversal<A, Vertex> addInE(final String edgeLabel, final String setLabel, final Object... propertyKeyValues) {
-        return __.<A>start().addInE(edgeLabel, setLabel, propertyKeyValues);
-    }
-
-    public static <A> GraphTraversal<A, Vertex> addOutE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
-        return __.<A>start().addOutE(edgeLabel, stepLabel, propertyKeyValues);
-    }
-
-    public static <A> GraphTraversal<A, Vertex> addBothE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
-        return __.<A>start().addBothE(edgeLabel, stepLabel, propertyKeyValues);
-    }
-
-    public static <A> GraphTraversal<A, A> timeLimit(final long timeLimit) {
-        return __.<A>start().timeLimit(timeLimit);
-    }
-
-    public static <A> GraphTraversal<A, A> tree(final String sideEffectKey) {
-        return __.<A>start().tree(sideEffectKey);
-    }
-
-    public static <A> GraphTraversal<A, A> tree() {
-        return __.<A>start().tree();
-    }
-
-    public static <A, V> GraphTraversal<A, A> sack(final BiFunction<V, A, V> sackFunction) {
-        return __.<A>start().sack(sackFunction);
-    }
-
-    public static <A, V> GraphTraversal<A, A> sack(final BinaryOperator<V> sackOperator, final String elementPropertyKey) {
-        return __.<A>start().sack(sackOperator, elementPropertyKey);
-    }
-
-    public static <A> GraphTraversal<A, A> store(final String sideEffectKey) {
-        return __.<A>start().store(sideEffectKey);
-    }
-
-    public static <A> GraphTraversal<A, A> store() {
-        return __.<A>start().store();
-    }
-
-    ///////////////////// BRANCH STEPS /////////////////////
-
-    public static <A, M, E2> GraphTraversal<A, E2> branch(final Function<Traverser<A>, M> function) {
-        return __.<A>start().branch(function);
-    }
-
-    public static <A, M, E2> GraphTraversal<A, E2> branch(final Traversal<?, M> traversalFunction) {
-        return __.<A>start().branch(traversalFunction);
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> choose(final Predicate<A> choosePredicate, final Traversal<?, E2> trueChoice, final Traversal<?, E2> falseChoice) {
-        return __.<A>start().choose(choosePredicate, trueChoice, falseChoice);
-    }
-
-    public static <A, M, E2> GraphTraversal<A, E2> choose(final Function<A, M> choiceFunction) {
-        return __.<A>start().choose(choiceFunction);
-    }
-
-    public static <A, M, E2> GraphTraversal<A, E2> choose(final Traversal<?, M> traversalFunction) {
-        return __.<A>start().choose(traversalFunction);
-    }
-
-    public static <A, M, E2> GraphTraversal<A, E2> choose(final Traversal<?, M> traversalPredicate, final Traversal<?, E2> trueChoice, final Traversal<?, E2> falseChoice) {
-        return __.<A>start().choose(traversalPredicate, trueChoice, falseChoice);
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> union(final Traversal<?, E2>... traversals) {
-        return __.<A>start().union(traversals);
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> coalesce(final Traversal<?, E2>... traversals) {
-        return __.<A>start().coalesce(traversals);
-    }
-
-    public static <A> GraphTraversal<A, A> repeat(final Traversal<?, A> traversal) {
-        return __.<A>start().repeat(traversal);
-    }
-
-    public static <A> GraphTraversal<A, A> emit(final Traversal<?, ?> emitTraversal) {
-        return __.<A>start().emit(emitTraversal);
-    }
-
-    public static <A> GraphTraversal<A, A> emit(final Predicate<Traverser<A>> emitPredicate) {
-        return __.<A>start().emit(emitPredicate);
-    }
-
-    public static <A> GraphTraversal<A, A> until(final Traversal<?, ?> untilTraversal) {
-        return __.<A>start().until(untilTraversal);
-    }
-
-    public static <A> GraphTraversal<A, A> until(final Predicate<Traverser<A>> untilPredicate) {
-        return __.<A>start().until(untilPredicate);
-    }
-
-    public static <A> GraphTraversal<A, A> times(final int maxLoops) {
-        return __.<A>start().times(maxLoops);
-    }
-
-    public static <A> GraphTraversal<A, A> emit() {
-        return __.<A>start().emit();
-    }
-
-    public static <A, E2> GraphTraversal<A, E2> local(final Traversal<?, E2> localTraversal) {
-        return __.<A>start().local(localTraversal);
-    }
-
-    ///////////////////// UTILITY STEPS /////////////////////
-
-    public static <A> GraphTraversal<A, A> as(final String label) {
-        return __.<A>start().as(label);
-    }
-
-    public static <A> GraphTraversal<A, A> profile() {
-        return __.<A>start().profile();
-    }
-
-    public static <A> GraphTraversal<A, A> withSideEffect(final String key, final Supplier supplier) {
-        return __.<A>start().withSideEffect(key, supplier);
-    }
-
-    public static <A, B> GraphTraversal<A, A> withSack(final Supplier<B> initialValue, final UnaryOperator<B> splitOperator) {
-        return __.<A>start().withSack(initialValue, splitOperator);
-    }
-
-    public static <A, B> GraphTraversal<A, A> withSack(final Supplier<B> initialValue) {
-        return __.<A>start().withSack(initialValue);
-    }
-
-    public static <A, B> GraphTraversal<A, A> withSack(final B initialValue, final UnaryOperator<B> splitOperator) {
-        return __.<A>start().withSack(initialValue, splitOperator);
-    }
-
-    public static <A, B> GraphTraversal<A, A> withSack(B initialValue) {
-        return __.<A>start().withSack(initialValue);
-    }
-
-    public static <A> GraphTraversal<A, A> withPath() {
-        return __.<A>start().withPath();
-    }
-
-    public static <A> GraphTraversal<A, A> barrier() {
-        return __.<A>start().barrier();
-    }
-
-    ////
-
-    public static <A> GraphTraversal<A, A> iterate() {
-        return __.<A>start().iterate();
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/lambda/LoopTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/lambda/LoopTraversal.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/lambda/LoopTraversal.java
deleted file mode 100644
index d9176a6..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/lambda/LoopTraversal.java
+++ /dev/null
@@ -1,50 +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 com.tinkerpop.gremlin.process.graph.traversal.lambda;
-
-import com.tinkerpop.gremlin.process.Traverser;
-import com.tinkerpop.gremlin.process.traversal.lambda.AbstractLambdaTraversal;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class LoopTraversal<S, E> extends AbstractLambdaTraversal<S, E> {
-
-    private final long maxLoops;
-    private boolean allow = false;
-
-    public LoopTraversal(final long maxLoops) {
-        this.maxLoops = maxLoops;
-    }
-
-    @Override
-    public boolean hasNext() {
-        return this.allow;
-    }
-
-    @Override
-    public void addStart(final Traverser<S> start) {
-        this.allow = start.loops() >= this.maxLoops;
-    }
-
-    @Override
-    public String toString() {
-        return "loops(" + this.maxLoops + ')';
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/ComparatorHolder.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/ComparatorHolder.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/ComparatorHolder.java
deleted file mode 100644
index 01f9514..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/ComparatorHolder.java
+++ /dev/null
@@ -1,33 +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 com.tinkerpop.gremlin.process.graph.traversal.step;
-
-import java.util.Comparator;
-import java.util.List;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public interface ComparatorHolder<S> {
-
-    public void addComparator(final Comparator<S> comparator);
-
-    public List<Comparator<S>> getComparators();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/HasContainerHolder.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/HasContainerHolder.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/HasContainerHolder.java
deleted file mode 100644
index ab726b5..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/HasContainerHolder.java
+++ /dev/null
@@ -1,31 +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 com.tinkerpop.gremlin.process.graph.traversal.step;
-
-import com.tinkerpop.gremlin.process.graph.util.HasContainer;
-
-import java.util.List;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public interface HasContainerHolder {
-
-    public List<HasContainer> getHasContainers();
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/Ranging.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/Ranging.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/Ranging.java
deleted file mode 100644
index 9946bb1..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/Ranging.java
+++ /dev/null
@@ -1,30 +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 com.tinkerpop.gremlin.process.graph.traversal.step;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public interface Ranging {
-
-    public long getLowRange();
-
-    public long getHighRange();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/SideEffectCapable.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/SideEffectCapable.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/SideEffectCapable.java
deleted file mode 100644
index ccb5c46..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/SideEffectCapable.java
+++ /dev/null
@@ -1,28 +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 com.tinkerpop.gremlin.process.graph.traversal.step;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public interface SideEffectCapable {
-
-    public String getSideEffectKey();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/TraversalOptionParent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/TraversalOptionParent.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/TraversalOptionParent.java
deleted file mode 100644
index b6575f3..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/TraversalOptionParent.java
+++ /dev/null
@@ -1,32 +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 com.tinkerpop.gremlin.process.graph.traversal.step;
-
-import com.tinkerpop.gremlin.process.Traversal;
-import com.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public interface TraversalOptionParent<M, S, E> extends TraversalParent {
-
-    public static enum Pick {any, none}
-
-    public void addGlobalChildOption(final M pickToken, final Traversal.Admin<S, E> traversalOption);
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/branch/BranchStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/branch/BranchStep.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/branch/BranchStep.java
deleted file mode 100644
index ed261ee..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/branch/BranchStep.java
+++ /dev/null
@@ -1,166 +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 com.tinkerpop.gremlin.process.graph.traversal.step.branch;
-
-import com.tinkerpop.gremlin.process.Traversal;
-import com.tinkerpop.gremlin.process.Traverser;
-import com.tinkerpop.gremlin.process.graph.traversal.step.TraversalOptionParent;
-import com.tinkerpop.gremlin.process.graph.traversal.step.util.ComputerAwareStep;
-import com.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
-import com.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
-import com.tinkerpop.gremlin.process.traverser.TraverserRequirement;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class BranchStep<S, E, M> extends ComputerAwareStep<S, E> implements TraversalOptionParent<M, S, E> {
-
-    protected Traversal.Admin<S, M> branchTraversal;
-    protected Map<M, List<Traversal.Admin<S, E>>> traversalOptions = new HashMap<>();
-    private boolean first = true;
-
-    public BranchStep(final Traversal.Admin traversal) {
-        super(traversal);
-    }
-
-    public void setBranchTraversal(final Traversal.Admin<S, M> branchTraversal) {
-        this.integrateChild(this.branchTraversal = branchTraversal, TYPICAL_LOCAL_OPERATIONS);
-    }
-
-    @Override
-    public void addGlobalChildOption(final M pickToken, final Traversal.Admin<S, E> traversalOption) {
-        if (this.traversalOptions.containsKey(pickToken))
-            this.traversalOptions.get(pickToken).add(traversalOption);
-        else
-            this.traversalOptions.put(pickToken, new ArrayList<>(Collections.singletonList(traversalOption)));
-        traversalOption.addStep(new EndStep(traversalOption));
-        this.integrateChild(traversalOption, TYPICAL_GLOBAL_OPERATIONS);
-    }
-
-    @Override
-    public Set<TraverserRequirement> getRequirements() {
-        return this.getSelfAndChildRequirements();
-    }
-
-    @Override
-    public List<Traversal.Admin<S, E>> getGlobalChildren() {
-        return Collections.unmodifiableList(this.traversalOptions.values().stream()
-                .flatMap(list -> list.stream())
-                .collect(Collectors.toList()));
-    }
-
-    @Override
-    public List<Traversal.Admin<S, M>> getLocalChildren() {
-        return Collections.singletonList(this.branchTraversal);
-    }
-
-    @Override
-    protected Iterator<Traverser<E>> standardAlgorithm() {
-        while (true) {
-            if (!this.first) {
-                for (final List<Traversal.Admin<S, E>> options : this.traversalOptions.values()) {
-                    for (final Traversal.Admin<S, E> option : options) {
-                        if (option.hasNext())
-                            return option.getEndStep();
-                    }
-                }
-            }
-            this.first = false;
-            ///
-            final Traverser.Admin<S> start = this.starts.next();
-            final M choice = TraversalUtil.apply(start, this.branchTraversal);
-            final List<Traversal.Admin<S, E>> branch = this.traversalOptions.containsKey(choice) ? this.traversalOptions.get(choice) : this.traversalOptions.get(Pick.none);
-            if (null != branch) {
-                branch.forEach(traversal -> {
-                    traversal.reset();
-                    traversal.addStart(start.split());
-                });
-            }
-            if (choice != Pick.any) {
-                final List<Traversal.Admin<S, E>> anyBranch = this.traversalOptions.get(Pick.any);
-                if (null != anyBranch)
-                    anyBranch.forEach(traversal -> {
-                        traversal.reset();
-                        traversal.addStart(start.split());
-                    });
-            }
-        }
-    }
-
-    @Override
-    protected Iterator<Traverser<E>> computerAlgorithm() {
-        final List<Traverser<E>> ends = new ArrayList<>();
-        final Traverser.Admin<S> start = this.starts.next();
-        final M choice = TraversalUtil.apply(start, this.branchTraversal);
-        final List<Traversal.Admin<S, E>> branch = this.traversalOptions.containsKey(choice) ? this.traversalOptions.get(choice) : this.traversalOptions.get(Pick.none);
-        if (null != branch) {
-            branch.forEach(traversal -> {
-                final Traverser.Admin<E> split = (Traverser.Admin<E>) start.split();
-                split.setStepId(traversal.getStartStep().getId());
-                ends.add(split);
-            });
-        }
-        if (choice != Pick.any) {
-            final List<Traversal.Admin<S, E>> anyBranch = this.traversalOptions.get(Pick.any);
-            if (null != anyBranch) {
-                anyBranch.forEach(traversal -> {
-                    final Traverser.Admin<E> split = (Traverser.Admin<E>) start.split();
-                    split.setStepId(traversal.getStartStep().getId());
-                    ends.add(split);
-                });
-            }
-        }
-        return ends.iterator();
-    }
-
-    @Override
-    public BranchStep<S, E, M> clone() throws CloneNotSupportedException {
-        final BranchStep<S, E, M> clone = (BranchStep<S, E, M>) super.clone();
-        clone.traversalOptions = new HashMap<>(this.traversalOptions.size());
-        for (final Map.Entry<M, List<Traversal.Admin<S, E>>> entry : this.traversalOptions.entrySet()) {
-            final List<Traversal.Admin<S, E>> traversals = entry.getValue();
-            if (traversals.size() > 0) {
-                final List<Traversal.Admin<S, E>> clonedTraversals = clone.traversalOptions.compute(entry.getKey(), (k, v) ->
-                        (v == null) ? new ArrayList<>(traversals.size()) : v);
-                for (final Traversal.Admin<S, E> traversal : traversals) {
-                    final Traversal.Admin<S, E> clonedTraversal = traversal.clone();
-                    clonedTraversals.add(clonedTraversal);
-                    clone.integrateChild(clonedTraversal, TYPICAL_GLOBAL_OPERATIONS);
-                }
-            }
-        }
-        clone.branchTraversal = this.branchTraversal.clone();
-        clone.integrateChild(clone.branchTraversal, TYPICAL_LOCAL_OPERATIONS);
-        return clone;
-    }
-
-    @Override
-    public String toString() {
-        return TraversalHelper.makeStepString(this, this.branchTraversal, this.traversalOptions);
-    }
-
-    @Override
-    public void reset() {
-        super.reset();
-        this.first = true;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/1545201f/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/branch/ChooseStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/branch/ChooseStep.java b/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/branch/ChooseStep.java
deleted file mode 100644
index e9b69f0..0000000
--- a/gremlin-core/src/main/java/com/tinkerpop/gremlin/process/graph/traversal/step/branch/ChooseStep.java
+++ /dev/null
@@ -1,51 +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 com.tinkerpop.gremlin.process.graph.traversal.step.branch;
-
-import com.tinkerpop.gremlin.process.Traversal;
-import com.tinkerpop.gremlin.process.traversal.lambda.HasNextTraversal;
-
-/**
- * A step which offers a choice of two or more Traversals to take.
- *
- * @author Joshua Shinavier (http://fortytwo.net)
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class ChooseStep<S, E, M> extends BranchStep<S, E, M> {
-
-    public ChooseStep(final Traversal.Admin traversal, final Traversal.Admin<S, M> choiceTraversal) {
-        super(traversal);
-        this.setBranchTraversal(choiceTraversal);
-    }
-
-    public ChooseStep(final Traversal.Admin traversal, final Traversal.Admin<S, ?> predicateTraversal, final Traversal.Admin<S, E> trueChoice, final Traversal.Admin<S, E> falseChoice) {
-        this(traversal, new HasNextTraversal(predicateTraversal));
-        this.addGlobalChildOption((M) Boolean.TRUE, trueChoice);
-        this.addGlobalChildOption((M) Boolean.FALSE, falseChoice);
-    }
-
-    @Override
-    public void addGlobalChildOption(final M pickToken, final Traversal.Admin<S, E> traversalOption) {
-        if (Pick.any.equals(pickToken))
-            throw new IllegalArgumentException("Choose step can not have an any-option as only one option per traverser is allowed");
-        if (this.traversalOptions.containsKey(pickToken))
-            throw new IllegalArgumentException("Choose step can only have one traversal per pick token: " + pickToken);
-        super.addGlobalChildOption(pickToken, traversalOption);
-    }
-}