You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/03/19 19:26:56 UTC

[38/40] incubator-tinkerpop git commit: the traversal steps provided by TinkerPop are the foundation for all dsl. GraphTraversal is just a dsl of traversal. Refactored the process API to reflect this concept. Fixed #592.

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java
deleted file mode 100644
index 50f5abd..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversal.java
+++ /dev/null
@@ -1,847 +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.graph.traversal;
-
-import org.apache.tinkerpop.gremlin.process.Path;
-import org.apache.tinkerpop.gremlin.process.Scope;
-import org.apache.tinkerpop.gremlin.process.Step;
-import org.apache.tinkerpop.gremlin.process.T;
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.lambda.LoopTraversal;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.ComparatorHolder;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.TraversalOptionParent;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.branch.BranchStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.branch.ChooseStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.branch.LocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.branch.RepeatStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.branch.UnionStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.AndStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.CoinStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.CyclicPathStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.DedupGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.ExceptStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.HasStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.HasTraversalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.IsStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.LambdaFilterStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.OrStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.RangeGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.RetainStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.SampleGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.SimplePathStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.TimeLimitStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.filter.WhereStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.AddEdgeByPathStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.AddEdgeStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.AddVertexStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.BackStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.CoalesceStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.CountGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.CountLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.DedupLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.EdgeOtherVertexStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.EdgeVertexStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.FoldStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.GroupCountStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.GroupStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.IdStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.KeyStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.LabelStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.LambdaFlatMapStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.LambdaMapStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MaxGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MaxLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MeanGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MeanLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MinGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.MinLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.OrderGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.OrderLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.PathStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.PropertiesStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.PropertyMapStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.PropertyValueStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.RangeLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.SackStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.SampleLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.SelectOneStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.SelectStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.SumGlobalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.SumLocalStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.TreeStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.UnfoldStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.VertexStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.match.MatchStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.AddPropertyStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.AggregateStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.GroupCountSideEffectStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.GroupSideEffectStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.IdentityStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.InjectStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.LambdaSideEffectStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.ProfileStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.SackElementValueStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.SackObjectStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.SideEffectCapStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.StartStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.StoreStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.SubgraphStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.TreeSideEffectStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.util.CollectingBarrierStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.util.PathIdentityStep;
-import org.apache.tinkerpop.gremlin.process.graph.util.HasContainer;
-import org.apache.tinkerpop.gremlin.process.graph.util.Tree;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.ElementValueTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.FilterTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.FilterTraverserTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.IdentityTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.MapTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.MapTraverserTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.lambda.TrueTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.step.ElementFunctionComparator;
-import org.apache.tinkerpop.gremlin.process.traversal.step.ElementValueComparator;
-import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalComparator;
-import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
-import org.apache.tinkerpop.gremlin.process.util.TraverserSet;
-import org.apache.tinkerpop.gremlin.structure.Compare;
-import org.apache.tinkerpop.gremlin.structure.Contains;
-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.Order;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.PropertyType;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.apache.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();
-    }
-
-    @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 this.asAdmin().addStep(scope.equals(Scope.global) ? new OrderGlobalStep<>(this.asAdmin()) : new OrderLocalStep<>(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.count(Scope.global);
-    }
-
-    public default GraphTraversal<S, Long> count(final Scope scope) {
-        return this.asAdmin().addStep(scope.equals(Scope.global) ? new CountGlobalStep<>(this.asAdmin()) : new CountLocalStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, Double> sum() {
-        return this.sum(Scope.global);
-    }
-
-    public default GraphTraversal<S, Double> sum(final Scope scope) {
-        return this.asAdmin().addStep(scope.equals(Scope.global) ? new SumGlobalStep(this.asAdmin()) : new SumLocalStep<>(this.asAdmin()));
-    }
-
-    public default <E2 extends Number> GraphTraversal<S, E2> max() {
-        return this.max(Scope.global);
-    }
-
-    public default <E2 extends Number> GraphTraversal<S, E2> max(final Scope scope) {
-        return this.asAdmin().addStep(scope.equals(Scope.global) ? new MaxGlobalStep<E2>(this.asAdmin()) : new MaxLocalStep(this.asAdmin()));
-    }
-
-    public default <E2 extends Number> GraphTraversal<S, E2> min() {
-        return this.min(Scope.global);
-    }
-
-    public default <E2 extends Number> GraphTraversal<S, E2> min(final Scope scope) {
-        return this.asAdmin().addStep(scope.equals(Scope.global) ? new MinGlobalStep<E2>(this.asAdmin()) : new MinLocalStep(this.asAdmin()));
-    }
-
-
-    public default GraphTraversal<S, Double> mean() {
-        return this.mean(Scope.global);
-    }
-
-    public default GraphTraversal<S, Double> mean(final Scope scope) {
-        return this.asAdmin().addStep(scope.equals(Scope.global) ? new MeanGlobalStep<>(this.asAdmin()) : new MeanLocalStep<>(this.asAdmin()));
-    }
-
-    public default <K, R> GraphTraversal<S, Map<K, R>> group() {
-        return this.asAdmin().addStep(new GroupStep<>(this.asAdmin()));
-    }
-
-    public default <E2> GraphTraversal<S, Map<E2, Long>> groupCount() {
-        return this.asAdmin().addStep(new GroupCountStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, Tree> tree() {
-        return this.asAdmin().addStep(new TreeStep<>(this.asAdmin()));
-    }
-
-    public default GraphTraversal<S, Vertex> addV(final Object... keyValues) {
-        return this.asAdmin().addStep(new AddVertexStep<>(this.asAdmin(), keyValues));
-    }
-
-    public default GraphTraversal<S, Edge> addE(final Direction direction, final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
-        return this.asAdmin().addStep(new AddEdgeByPathStep(this.asAdmin(), direction, edgeLabel, stepLabel, propertyKeyValues));
-    }
-
-    public default GraphTraversal<S, Edge> addE(final Direction direction, final String edgeLabel, final Vertex otherVertex, final Object... propertyKeyValues) {
-        return this.asAdmin().addStep(new AddEdgeStep(this.asAdmin(), direction, edgeLabel, otherVertex, propertyKeyValues));
-    }
-
-    public default GraphTraversal<S, Edge> addE(final Direction direction, final String edgeLabel, final Iterator<Vertex> otherVertices, final Object... propertyKeyValues) {
-        return this.asAdmin().addStep(new AddEdgeStep(this.asAdmin(), direction, edgeLabel, otherVertices, propertyKeyValues));
-    }
-
-    public default GraphTraversal<S, Edge> addInE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
-        return this.addE(Direction.IN, edgeLabel, stepLabel, propertyKeyValues);
-    }
-
-    public default GraphTraversal<S, Edge> addInE(final String edgeLabel, final Vertex otherVertex, final Object... propertyKeyValues) {
-        return this.addE(Direction.IN, edgeLabel, otherVertex, propertyKeyValues);
-    }
-
-    public default GraphTraversal<S, Edge> addInE(final String edgeLabel, final Iterator<Vertex> otherVertices, final Object... propertyKeyValues) {
-        return this.addE(Direction.IN, edgeLabel, otherVertices, propertyKeyValues);
-    }
-
-    public default GraphTraversal<S, Edge> addOutE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
-        return this.addE(Direction.OUT, edgeLabel, stepLabel, propertyKeyValues);
-    }
-
-    public default GraphTraversal<S, Edge> addOutE(final String edgeLabel, final Vertex otherVertex, final Object... propertyKeyValues) {
-        return this.addE(Direction.OUT, edgeLabel, otherVertex, propertyKeyValues);
-    }
-
-    public default GraphTraversal<S, Edge> addOutE(final String edgeLabel, final Iterator<Vertex> otherVertices, final Object... propertyKeyValues) {
-        return this.addE(Direction.OUT, edgeLabel, otherVertices, propertyKeyValues);
-    }
-
-    public default GraphTraversal<S, E> property(final String key, final Object value) {
-        return this.asAdmin().addStep(new AddPropertyStep(this.asAdmin(), key, value));
-    }
-
-    ///////////////////// 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.dedup(Scope.global);
-    }
-
-    public default GraphTraversal<S, E> dedup(final Scope scope) {
-        return this.asAdmin().addStep(scope.equals(Scope.global) ? new DedupGlobalStep<>(this.asAdmin()) : new DedupLocalStep(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, false));
-    }
-
-    public default GraphTraversal<S, E> hasNot(final Traversal<?, ?> hasNotNextTraversal) {
-        return this.asAdmin().addStep(new HasTraversalStep<>(this.asAdmin(), (Traversal.Admin<E, ?>) hasNotNextTraversal, true));
-    }
-
-    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.range(Scope.global, low, high);
-    }
-
-    public default GraphTraversal<S, E> range(final Scope scope, final long low, final long high) {
-        return this.asAdmin().addStep(scope.equals(Scope.global)
-                ? new RangeGlobalStep<>(this.asAdmin(), low, high)
-                : new RangeLocalStep<>(this.asAdmin(), low, high));
-    }
-
-    public default GraphTraversal<S, E> limit(final long limit) {
-        return this.range(Scope.global, 0, limit);
-    }
-
-    public default GraphTraversal<S, E> limit(final Scope scope, final long limit) {
-        return this.range(scope, 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.sample(Scope.global, amountToSample);
-    }
-
-    public default GraphTraversal<S, E> sample(final Scope scope, final int amountToSample) {
-        return this.asAdmin().addStep(scope.equals(Scope.global)
-                ? new SampleGlobalStep<>(this.asAdmin(), amountToSample)
-                : new SampleLocalStep<>(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, E> aggregate(final String sideEffectKey) {
-        return this.asAdmin().addStep(new AggregateStep<>(this.asAdmin(), sideEffectKey));
-    }
-
-    public default GraphTraversal<S, E> group(final String sideEffectKey) {
-        return this.asAdmin().addStep(new GroupSideEffectStep<>(this.asAdmin(), sideEffectKey));
-    }
-
-    public default GraphTraversal<S, E> groupCount(final String sideEffectKey) {
-        return this.asAdmin().addStep(new GroupCountSideEffectStep<>(this.asAdmin(), sideEffectKey));
-    }
-
-    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 TreeSideEffectStep<>(this.asAdmin(), sideEffectKey));
-    }
-
-    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> 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 <V> GraphTraversal<S, E> by(final Traversal<?, ?> traversal, final Comparator<V> endComparator) {
-        ((ComparatorHolder<E>) this.asAdmin().getEndStep()).addComparator(new TraversalComparator(traversal.asAdmin(), endComparator));
-        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();
-            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/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversalSource.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversalSource.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversalSource.java
deleted file mode 100644
index cf0de34..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/GraphTraversalSource.java
+++ /dev/null
@@ -1,138 +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.graph.traversal;
-
-import org.apache.tinkerpop.gremlin.process.TraversalEngine;
-import org.apache.tinkerpop.gremlin.process.TraversalSource;
-import org.apache.tinkerpop.gremlin.process.TraversalStrategies;
-import org.apache.tinkerpop.gremlin.process.TraversalStrategy;
-import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.map.AddVertexStartStep;
-import org.apache.tinkerpop.gremlin.process.graph.traversal.step.sideEffect.GraphStep;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.ComputerTraversalEngine;
-import org.apache.tinkerpop.gremlin.process.traversal.engine.StandardTraversalEngine;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-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.util.StringFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public class GraphTraversalSource implements TraversalSource {
-
-    public static final Builder standard = GraphTraversalSource.build().engine(StandardTraversalEngine.build());
-    public static final Builder computer = GraphTraversalSource.build().engine(ComputerTraversalEngine.build());
-
-    public static Builder computer(final Class<? extends GraphComputer> graphComputerClass) {
-        return GraphTraversalSource.build().engine(ComputerTraversalEngine.build().computer(graphComputerClass));
-    }
-
-    ////
-
-    private final transient Graph graph;
-    private final TraversalEngine.Builder engine;
-    private final TraversalStrategies strategies;
-
-    public GraphTraversalSource(final Graph graph, final TraversalEngine.Builder engine, final TraversalStrategy... strategies) {
-        this.graph = graph;
-        this.engine = engine;
-        final TraversalStrategies tempStrategies = TraversalStrategies.GlobalCache.getStrategies(this.graph.getClass());
-        this.strategies = strategies.length == 0 ? tempStrategies : tempStrategies.clone().addStrategies(strategies);
-    }
-
-    public GraphTraversal<Vertex, Vertex> addV(final Object... keyValues) {
-        final GraphTraversal.Admin<Vertex, Vertex> traversal = new DefaultGraphTraversal<>(this.graph);
-        traversal.setEngine(this.engine.create(this.graph));
-        traversal.setStrategies(this.strategies);
-        return traversal.addStep(new AddVertexStartStep(traversal, keyValues));
-    }
-
-    public GraphTraversal<Vertex, Vertex> V(final Object... vertexIds) {
-        final GraphTraversal.Admin<Vertex, Vertex> traversal = new DefaultGraphTraversal<>(this.graph);
-        traversal.setEngine(this.engine.create(this.graph));
-        traversal.setStrategies(this.strategies);
-        return traversal.addStep(new GraphStep<>(traversal, Vertex.class, vertexIds));
-    }
-
-    public GraphTraversal<Edge, Edge> E(final Object... edgesIds) {
-        final GraphTraversal.Admin<Edge, Edge> traversal = new DefaultGraphTraversal<>(this.graph);
-        traversal.setEngine(this.engine.create(this.graph));
-        traversal.setStrategies(this.strategies);
-        return traversal.addStep(new GraphStep<>(traversal, Edge.class, edgesIds));
-    }
-
-    public Transaction tx() {
-        return this.graph.tx();
-    }
-
-    public static Builder build() {
-        return new Builder();
-    }
-
-
-    @Override
-    public Optional<GraphComputer> getGraphComputer() {
-        return this.engine.create(this.graph).getGraphComputer();
-    }
-
-    @Override
-    public Optional<Graph> getGraph() {
-        return Optional.ofNullable(this.graph);
-    }
-
-    @Override
-    public GraphTraversalSource.Builder asBuilder() {
-        final GraphTraversalSource.Builder builder = GraphTraversalSource.build().engine(this.engine);
-        this.strategies.toList().forEach(builder::strategy);
-        return builder;
-    }
-
-    @Override
-    public String toString() {
-        return StringFactory.traversalSourceString(this);
-    }
-
-    //////
-
-    public static class Builder implements TraversalSource.Builder<GraphTraversalSource> {
-
-        private TraversalEngine.Builder engineBuilder = StandardTraversalEngine.build();
-        private List<TraversalStrategy> strategies = new ArrayList<>();
-
-        public Builder engine(final TraversalEngine.Builder engineBuilder) {
-            this.engineBuilder = engineBuilder;
-            return this;
-        }
-
-        public Builder strategy(final TraversalStrategy strategy) {
-            this.strategies.add(strategy);
-            return this;
-        }
-
-        public GraphTraversalSource create(final Graph graph) {
-            return new GraphTraversalSource(graph, this.engineBuilder, this.strategies.toArray(new TraversalStrategy[this.strategies.size()]));
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/__.java
deleted file mode 100644
index b613596..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/__.java
+++ /dev/null
@@ -1,602 +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.graph.traversal;
-
-import org.apache.tinkerpop.gremlin.process.Path;
-import org.apache.tinkerpop.gremlin.process.Scope;
-import org.apache.tinkerpop.gremlin.process.T;
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.tinkerpop.gremlin.process.graph.util.Tree;
-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.Vertex;
-import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
-
-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<>(EmptyGraph.instance());
-    }
-
-    public static <A> GraphTraversal<A, A> __(final Object... starts) {
-        return inject(starts);
-    }
-
-    ///////////////////// 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, Long> count(final Scope scope) {
-        return __.<A>start().count(scope);
-    }
-
-    public static <A> GraphTraversal<A, Double> sum() {
-        return __.<A>start().sum();
-    }
-
-    public static <A> GraphTraversal<A, Double> sum(final Scope scope) {
-        return __.<A>start().sum(scope);
-    }
-
-
-    public static <A, E2 extends Number> GraphTraversal<A, E2> min() {
-        return __.<A>start().min();
-    }
-
-    public static <A, E2 extends Number> GraphTraversal<A, E2> min(final Scope scope) {
-        return __.<A>start().min(scope);
-    }
-
-    public static <A, E2 extends Number> GraphTraversal<A, E2> max() {
-        return __.<A>start().max();
-    }
-
-    public static <A, E2 extends Number> GraphTraversal<A, E2> max(final Scope scope) {
-        return __.<A>start().max(scope);
-    }
-
-    public static <A> GraphTraversal<A, Double> mean() {
-        return __.<A>start().mean();
-    }
-
-    public static <A> GraphTraversal<A, Double> mean(final Scope scope) {
-        return __.<A>start().mean(scope);
-    }
-
-    public static <A, K, R> GraphTraversal<A, Map<K, R>> group() {
-        return __.<A>start().group();
-    }
-
-    public static <A, B> GraphTraversal<A, Map<B, Long>> groupCount() {
-        return __.<A>start().<B>groupCount();
-    }
-
-    public static <A> GraphTraversal<A, Tree> tree() {
-        return __.<A>start().tree();
-    }
-
-    public static <A> GraphTraversal<A, Vertex> addV(final Object... propertyKeyValues) {
-        return __.<A>start().addV(propertyKeyValues);
-    }
-
-    public static <A> GraphTraversal<A, Edge> 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, Edge> addInE(final String edgeLabel, final String setLabel, final Object... propertyKeyValues) {
-        return __.<A>start().addInE(edgeLabel, setLabel, propertyKeyValues);
-    }
-
-    public static <A> GraphTraversal<A, Edge> addOutE(final String edgeLabel, final String stepLabel, final Object... propertyKeyValues) {
-        return __.<A>start().addOutE(edgeLabel, stepLabel, propertyKeyValues);
-    }
-
-    public static <A> GraphTraversal<A, A> property(final String key, final Object value) {
-        return __.<A>start().property(key, value);
-    }
-
-    ///////////////////// 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> dedup(final Scope scope) {
-        return __.<A>start().dedup(scope);
-    }
-
-    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> hasNot(final Traversal<?, ?> hasNotNextTraversal) {
-        return __.<A>start().hasNot(hasNotNextTraversal);
-    }
-
-    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> range(final Scope scope, final long low, final long high) {
-        return __.<A>start().range(scope, low, high);
-    }
-
-    public static <A> GraphTraversal<A, A> limit(final long limit) {
-        return __.<A>start().limit(limit);
-    }
-
-    public static <A> GraphTraversal<A, A> limit(final Scope scope, final long limit) {
-        return __.<A>start().limit(scope, 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);
-    }
-
-    public static <A> GraphTraversal<A, A> sample(final Scope scope, final int amountToSample) {
-        return __.<A>start().sample(scope, 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, A> aggregate(final String sideEffectKey) {
-        return __.<A>start().aggregate(sideEffectKey);
-    }
-
-    public static <A> GraphTraversal<A, A> group(final String sideEffectKey) {
-        return __.<A>start().group(sideEffectKey);
-    }
-
-    public static <A> GraphTraversal<A, A> groupCount(final String sideEffectKey) {
-        return __.<A>start().groupCount(sideEffectKey);
-    }
-
-    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, 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);
-    }
-
-    ///////////////////// 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/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/lambda/LoopTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/lambda/LoopTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/lambda/LoopTraversal.java
deleted file mode 100644
index fdc03fa..0000000
--- a/gremlin-core/src/main/java/org/apache/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 org.apache.tinkerpop.gremlin.process.graph.traversal.lambda;
-
-import org.apache.tinkerpop.gremlin.process.Traverser;
-import org.apache.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/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/ComparatorHolder.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/ComparatorHolder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/ComparatorHolder.java
deleted file mode 100644
index 474c994..0000000
--- a/gremlin-core/src/main/java/org/apache/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 org.apache.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/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/HasContainerHolder.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/HasContainerHolder.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/HasContainerHolder.java
deleted file mode 100644
index 52db804..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/HasContainerHolder.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 org.apache.tinkerpop.gremlin.process.graph.traversal.step;
-
-import org.apache.tinkerpop.gremlin.process.graph.util.HasContainer;
-
-import java.util.List;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public interface HasContainerHolder {
-
-    public List<HasContainer> getHasContainers();
-
-    public void addHasContainer(final HasContainer hasContainer);
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/Mutating.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/Mutating.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/Mutating.java
deleted file mode 100644
index ad7761b..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/Mutating.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 org.apache.tinkerpop.gremlin.process.graph.traversal.step;
-
-/**
- * A marker interface for steps that modify the graph.
- *
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public interface Mutating {
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/Ranging.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/Ranging.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/Ranging.java
deleted file mode 100644
index 6263b96..0000000
--- a/gremlin-core/src/main/java/org/apache/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 org.apache.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/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/SideEffectCapable.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/SideEffectCapable.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/SideEffectCapable.java
deleted file mode 100644
index 9ad7d87..0000000
--- a/gremlin-core/src/main/java/org/apache/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 org.apache.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/4c97e964/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/TraversalOptionParent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/TraversalOptionParent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/graph/traversal/step/TraversalOptionParent.java
deleted file mode 100644
index dbea36a..0000000
--- a/gremlin-core/src/main/java/org/apache/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 org.apache.tinkerpop.gremlin.process.graph.traversal.step;
-
-import org.apache.tinkerpop.gremlin.process.Traversal;
-import org.apache.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);
-}