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/03/27 14:01:46 UTC

[2/6] incubator-tinkerpop git commit: Moved all Event implementations to the Event interface.

Moved all Event implementations to the Event interface.


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

Branch: refs/heads/master
Commit: 010fee5f4db4e82679e0fb20761624685f9ac51d
Parents: 4599dfb
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Mar 27 08:06:34 2015 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Mar 27 08:06:34 2015 -0400

----------------------------------------------------------------------
 .../process/traversal/step/filter/DropStep.java |  18 +-
 .../traversal/step/map/AddEdgeByPathStep.java   |  14 +-
 .../process/traversal/step/map/AddEdgeStep.java |  15 +-
 .../traversal/step/map/AddVertexStartStep.java  |  14 +-
 .../traversal/step/map/AddVertexStep.java       |  14 +-
 .../step/sideEffect/AddPropertyStep.java        |  23 +-
 .../step/util/event/EdgeAddedEvent.java         |  42 ----
 .../util/event/EdgePropertyChangedEvent.java    |  38 ----
 .../util/event/EdgePropertyRemovedEvent.java    |  40 ----
 .../step/util/event/EdgeRemovedEvent.java       |  44 ----
 .../util/event/ElementPropertyChangedEvent.java |  32 ---
 .../step/util/event/ElementPropertyEvent.java   |  51 -----
 .../traversal/step/util/event/Event.java        | 222 ++++++++++++++++++-
 .../step/util/event/VertexAddedEvent.java       |  42 ----
 .../util/event/VertexPropertyChangedEvent.java  |  38 ----
 .../VertexPropertyPropertyChangedEvent.java     |  38 ----
 .../VertexPropertyPropertyRemovedEvent.java     |  38 ----
 .../util/event/VertexPropertyRemovedEvent.java  |  42 ----
 .../step/util/event/VertexRemovedEvent.java     |  42 ----
 19 files changed, 265 insertions(+), 542 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
index 1da4f90..0a5b730 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
@@ -21,14 +21,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EdgePropertyRemovedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EdgeRemovedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ElementPropertyEvent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexPropertyPropertyRemovedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexPropertyRemovedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexRemovedEvent;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Property;
@@ -60,11 +54,11 @@ public final class DropStep<S> extends FilterStep<S> implements Mutating<EventCa
             if (callbacks != null) {
                 final Event removeEvent;
                 if (s instanceof Vertex)
-                    removeEvent = new VertexRemovedEvent(DetachedFactory.detach((Vertex) s, true));
+                    removeEvent = new Event.VertexRemovedEvent(DetachedFactory.detach((Vertex) s, true));
                 else if (s instanceof Edge)
-                    removeEvent = new EdgeRemovedEvent(DetachedFactory.detach((Edge) s, true));
+                    removeEvent = new Event.EdgeRemovedEvent(DetachedFactory.detach((Edge) s, true));
                 else if (s instanceof VertexProperty)
-                    removeEvent = new VertexPropertyRemovedEvent(DetachedFactory.detach((VertexProperty) s, true));
+                    removeEvent = new Event.VertexPropertyRemovedEvent(DetachedFactory.detach((VertexProperty) s, true));
                 else
                     throw new IllegalStateException("The incoming object is not removable: " + s);
 
@@ -75,11 +69,11 @@ public final class DropStep<S> extends FilterStep<S> implements Mutating<EventCa
         } else if (s instanceof Property) {
             final Property toRemove = ((Property) s);
             if (callbacks != null) {
-                final ElementPropertyEvent removeEvent;
+                final Event.ElementPropertyEvent removeEvent;
                 if (toRemove.element() instanceof Edge)
-                    removeEvent = new EdgePropertyRemovedEvent((Edge) toRemove.element(), DetachedFactory.detach(toRemove));
+                    removeEvent = new Event.EdgePropertyRemovedEvent((Edge) toRemove.element(), DetachedFactory.detach(toRemove));
                 else if (toRemove.element() instanceof VertexProperty)
-                    removeEvent = new VertexPropertyPropertyRemovedEvent((VertexProperty) toRemove.element(), DetachedFactory.detach(toRemove));
+                    removeEvent = new Event.VertexPropertyPropertyRemovedEvent((VertexProperty) toRemove.element(), DetachedFactory.detach(toRemove));
                 else
                     throw new IllegalStateException("The incoming object is not removable: " + s);
 

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStep.java
index 1e8a86b..f92f2f3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeByPathStep.java
@@ -21,7 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EdgeAddedEvent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
@@ -40,14 +40,14 @@ import java.util.Set;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class AddEdgeByPathStep extends MapStep<Vertex, Edge> implements Mutating<EventCallback<EdgeAddedEvent>> {
+public final class AddEdgeByPathStep extends MapStep<Vertex, Edge> implements Mutating<EventCallback<Event.EdgeAddedEvent>> {
 
     private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(
             TraverserRequirement.PATH,
             TraverserRequirement.OBJECT
     );
 
-    private List<EventCallback<EdgeAddedEvent>> callbacks = null;
+    private List<EventCallback<Event.EdgeAddedEvent>> callbacks = null;
 
     // TODO: Weight key based on Traverser.getCount() ?
 
@@ -99,7 +99,7 @@ public final class AddEdgeByPathStep extends MapStep<Vertex, Edge> implements Mu
             e = currentVertex.addEdge(this.edgeLabel, otherVertex, this.keyValues);
 
         if (callbacks != null) {
-            final EdgeAddedEvent vae = new EdgeAddedEvent(DetachedFactory.detach(e, true));
+            final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(DetachedFactory.detach(e, true));
             callbacks.forEach(c -> c.accept(vae));
         }
 
@@ -112,13 +112,13 @@ public final class AddEdgeByPathStep extends MapStep<Vertex, Edge> implements Mu
     }
 
     @Override
-    public void addCallback(final EventCallback<EdgeAddedEvent> edgeAddedEventEventCallback) {
+    public void addCallback(final EventCallback<Event.EdgeAddedEvent> edgeAddedEventEventCallback) {
         if (callbacks == null) callbacks = new ArrayList<>();
         callbacks.add(edgeAddedEventEventCallback);
     }
 
     @Override
-    public void removeCallback(final EventCallback<EdgeAddedEvent> edgeAddedEventEventCallback) {
+    public void removeCallback(final EventCallback<Event.EdgeAddedEvent> edgeAddedEventEventCallback) {
         if (callbacks != null) callbacks.remove(edgeAddedEventEventCallback);
     }
 
@@ -128,7 +128,7 @@ public final class AddEdgeByPathStep extends MapStep<Vertex, Edge> implements Mu
     }
 
     @Override
-    public List<EventCallback<EdgeAddedEvent>> getCallbacks() {
+    public List<EventCallback<Event.EdgeAddedEvent>> getCallbacks() {
         return (callbacks != null) ? Collections.unmodifiableList(callbacks) : Collections.emptyList();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
index 7ddcf0b..d3c72ac 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
@@ -21,9 +21,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EdgeAddedEvent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexAddedEvent;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -42,7 +41,7 @@ import java.util.Set;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Mutating<EventCallback<EdgeAddedEvent>> {
+public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Mutating<EventCallback<Event.EdgeAddedEvent>> {
 
     private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT);
 
@@ -51,7 +50,7 @@ public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Muta
     private final List<Vertex> vertices;
     private final Direction direction;
 
-    private List<EventCallback<EdgeAddedEvent>> callbacks = null;
+    private List<EventCallback<Event.EdgeAddedEvent>> callbacks = null;
 
     public AddEdgeStep(final Traversal.Admin traversal, final Direction direction, final String edgeLabel, final Vertex vertex, final Object... keyValues) {
         this(traversal, direction, edgeLabel, IteratorUtils.of(vertex), keyValues);
@@ -89,7 +88,7 @@ public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Muta
                     vertex.addEdge(this.edgeLabel, traverser.get(), this.keyValues);
 
             if (callbacks != null) {
-                final EdgeAddedEvent vae = new EdgeAddedEvent(DetachedFactory.detach(e, true));
+                final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(DetachedFactory.detach(e, true));
                 callbacks.forEach(c -> c.accept(vae));
             }
 
@@ -103,13 +102,13 @@ public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Muta
     }
 
     @Override
-    public void addCallback(final EventCallback<EdgeAddedEvent> edgeAddedEventEventCallback) {
+    public void addCallback(final EventCallback<Event.EdgeAddedEvent> edgeAddedEventEventCallback) {
         if (callbacks == null) callbacks = new ArrayList<>();
         callbacks.add(edgeAddedEventEventCallback);
     }
 
     @Override
-    public void removeCallback(final EventCallback<EdgeAddedEvent> edgeAddedEventEventCallback) {
+    public void removeCallback(final EventCallback<Event.EdgeAddedEvent> edgeAddedEventEventCallback) {
         if (callbacks != null) callbacks.remove(edgeAddedEventEventCallback);
     }
 
@@ -119,7 +118,7 @@ public final class AddEdgeStep extends FlatMapStep<Vertex, Edge> implements Muta
     }
 
     @Override
-    public List<EventCallback<EdgeAddedEvent>> getCallbacks() {
+    public List<EventCallback<Event.EdgeAddedEvent>> getCallbacks() {
         return (callbacks != null) ? Collections.unmodifiableList(callbacks) : Collections.emptyList();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
index 92dadb0..5a2fa0d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
@@ -23,8 +23,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexAddedEvent;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 
@@ -36,11 +36,11 @@ import java.util.List;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> implements Mutating<EventCallback<VertexAddedEvent>> {
+public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> implements Mutating<EventCallback<Event.VertexAddedEvent>> {
 
     private final Object[] keyValues;
     private boolean first = true;
-    private List<EventCallback<VertexAddedEvent>> callbacks = null;
+    private List<EventCallback<Event.VertexAddedEvent>> callbacks = null;
 
     public AddVertexStartStep(final Traversal.Admin traversal, final Object... keyValues) {
         super(traversal);
@@ -57,7 +57,7 @@ public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> imple
             this.first = false;
             final Vertex v = this.getTraversal().getGraph().get().addVertex(this.keyValues);
             if (callbacks != null) {
-                final VertexAddedEvent vae = new VertexAddedEvent(DetachedFactory.detach(v, true));
+                final Event.VertexAddedEvent vae = new Event.VertexAddedEvent(DetachedFactory.detach(v, true));
                 callbacks.forEach(c -> c.accept(vae));
             }
 
@@ -67,13 +67,13 @@ public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> imple
     }
 
     @Override
-    public void addCallback(final EventCallback<VertexAddedEvent> vertexAddedEventEventCallback) {
+    public void addCallback(final EventCallback<Event.VertexAddedEvent> vertexAddedEventEventCallback) {
         if (callbacks == null) callbacks = new ArrayList<>();
         callbacks.add(vertexAddedEventEventCallback);
     }
 
     @Override
-    public void removeCallback(final EventCallback<VertexAddedEvent> vertexAddedEventEventCallback) {
+    public void removeCallback(final EventCallback<Event.VertexAddedEvent> vertexAddedEventEventCallback) {
         if (callbacks != null) callbacks.remove(vertexAddedEventEventCallback);
     }
 
@@ -83,7 +83,7 @@ public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> imple
     }
 
     @Override
-    public List<EventCallback<VertexAddedEvent>> getCallbacks() {
+    public List<EventCallback<Event.VertexAddedEvent>> getCallbacks() {
         return (callbacks != null) ? Collections.unmodifiableList(callbacks) : Collections.emptyList();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
index 8e05471..2e5d335 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
@@ -21,8 +21,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexAddedEvent;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
@@ -35,12 +35,12 @@ import java.util.List;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class AddVertexStep<S> extends MapStep<S, Vertex> implements Mutating<EventCallback<VertexAddedEvent>> {
+public final class AddVertexStep<S> extends MapStep<S, Vertex> implements Mutating<EventCallback<Event.VertexAddedEvent>> {
 
     private final Object[] keyValues;
     private final transient Graph graph;
 
-    private List<EventCallback<VertexAddedEvent>> callbacks = null;
+    private List<EventCallback<Event.VertexAddedEvent>> callbacks = null;
 
     public AddVertexStep(final Traversal.Admin traversal, final Object... keyValues) {
         super(traversal);
@@ -56,20 +56,20 @@ public final class AddVertexStep<S> extends MapStep<S, Vertex> implements Mutati
     protected Vertex map(final Traverser.Admin<S> traverser) {
         final Vertex v = this.graph.addVertex(this.keyValues);
         if (callbacks != null) {
-            final VertexAddedEvent vae = new VertexAddedEvent(DetachedFactory.detach(v, true));
+            final Event.VertexAddedEvent vae = new Event.VertexAddedEvent(DetachedFactory.detach(v, true));
             callbacks.forEach(c -> c.accept(vae));
         }
         return v;
     }
 
     @Override
-    public void addCallback(final EventCallback<VertexAddedEvent> vertexAddedEventEventCallback) {
+    public void addCallback(final EventCallback<Event.VertexAddedEvent> vertexAddedEventEventCallback) {
         if (callbacks == null) callbacks = new ArrayList<>();
         callbacks.add(vertexAddedEventEventCallback);
     }
 
     @Override
-    public void removeCallback(final EventCallback<VertexAddedEvent> vertexAddedEventEventCallback) {
+    public void removeCallback(final EventCallback<Event.VertexAddedEvent> vertexAddedEventEventCallback) {
         if (callbacks != null) callbacks.remove(vertexAddedEventEventCallback);
     }
 
@@ -79,7 +79,7 @@ public final class AddVertexStep<S> extends MapStep<S, Vertex> implements Mutati
     }
 
     @Override
-    public List<EventCallback<VertexAddedEvent>> getCallbacks() {
+    public List<EventCallback<Event.VertexAddedEvent>> getCallbacks() {
         return (callbacks != null) ? Collections.unmodifiableList(callbacks) : Collections.emptyList();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
index 2d98738..cbb5e27 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
@@ -21,11 +21,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EdgePropertyChangedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ElementPropertyChangedEvent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.EventCallback;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexPropertyChangedEvent;
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.VertexPropertyPropertyChangedEvent;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
@@ -43,7 +40,7 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public final class AddPropertyStep<S extends Element> extends SideEffectStep<S> implements Mutating<EventCallback<ElementPropertyChangedEvent>> {
+public final class AddPropertyStep<S extends Element> extends SideEffectStep<S> implements Mutating<EventCallback<Event.ElementPropertyChangedEvent>> {
 
     private static final Set<TraverserRequirement> REQUIREMENTS = EnumSet.of(TraverserRequirement.OBJECT);
 
@@ -52,7 +49,7 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
     private final Object value;
     private final Object[] vertexPropertyKeyValues;
     private final boolean asVertex;
-    private List<EventCallback<ElementPropertyChangedEvent>> callbacks = null;
+    private List<EventCallback<Event.ElementPropertyChangedEvent>> callbacks = null;
 
     public AddPropertyStep(final Traversal.Admin traversal, final VertexProperty.Cardinality cardinality, final String key, final Object value, final Object... vertexPropertyKeyValues) {
         super(traversal);
@@ -74,13 +71,13 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
             final Property currentProperty = traverser.get().property(key);
             final boolean newProperty = asVertex ? currentProperty == VertexProperty.empty() : currentProperty == Property.empty();
 
-            ElementPropertyChangedEvent evt;
+            Event.ElementPropertyChangedEvent evt;
             if (currentElement instanceof Vertex)
-                evt = new VertexPropertyChangedEvent(DetachedFactory.detach((Vertex) currentElement, true), newProperty ? null : DetachedFactory.detach((VertexProperty) currentProperty, true), value, vertexPropertyKeyValues);
+                evt = new Event.VertexPropertyChangedEvent(DetachedFactory.detach((Vertex) currentElement, true), newProperty ? null : DetachedFactory.detach((VertexProperty) currentProperty, true), value, vertexPropertyKeyValues);
             else if (currentElement instanceof Edge)
-                evt = new EdgePropertyChangedEvent(DetachedFactory.detach((Edge) currentElement, true), newProperty ? null : DetachedFactory.detach(currentProperty), value);
+                evt = new Event.EdgePropertyChangedEvent(DetachedFactory.detach((Edge) currentElement, true), newProperty ? null : DetachedFactory.detach(currentProperty), value);
             else if (currentElement instanceof VertexProperty)
-                evt = new VertexPropertyPropertyChangedEvent(DetachedFactory.detach((VertexProperty) currentElement, true), newProperty ? null : DetachedFactory.detach(currentProperty), value);
+                evt = new Event.VertexPropertyPropertyChangedEvent(DetachedFactory.detach((VertexProperty) currentElement, true), newProperty ? null : DetachedFactory.detach(currentProperty), value);
             else
                 throw new IllegalStateException(String.format("The incoming object cannot be processed by change eventing in %s:  %s", AddPropertyStep.class.getName(), currentElement));
 
@@ -100,13 +97,13 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
 
 
     @Override
-    public void addCallback(final EventCallback<ElementPropertyChangedEvent> elementPropertyChangedEventCallback) {
+    public void addCallback(final EventCallback<Event.ElementPropertyChangedEvent> elementPropertyChangedEventCallback) {
         if (callbacks == null) callbacks = new ArrayList<>();
         callbacks.add(elementPropertyChangedEventCallback);
     }
 
     @Override
-    public void removeCallback(final EventCallback<ElementPropertyChangedEvent> elementPropertyChangedEventCallback) {
+    public void removeCallback(final EventCallback<Event.ElementPropertyChangedEvent> elementPropertyChangedEventCallback) {
         if (callbacks != null) callbacks.remove(elementPropertyChangedEventCallback);
     }
 
@@ -116,7 +113,7 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
     }
 
     @Override
-    public List<EventCallback<ElementPropertyChangedEvent>> getCallbacks() {
+    public List<EventCallback<Event.ElementPropertyChangedEvent>> getCallbacks() {
         return (callbacks != null) ? Collections.unmodifiableList(callbacks) : Collections.emptyList();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java
deleted file mode 100644
index 3011806..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeAddedEvent.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Edge;
-
-import java.util.Iterator;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class EdgeAddedEvent implements Event {
-
-    private final Edge edge;
-
-    public EdgeAddedEvent(final Edge edge) {
-        this.edge = edge;
-    }
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            eventListeners.next().edgeAdded(edge);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java
deleted file mode 100644
index 210f939..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyChangedEvent.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class EdgePropertyChangedEvent extends ElementPropertyChangedEvent {
-
-    public EdgePropertyChangedEvent(final Edge edge, final Property oldValue, final Object newValue) {
-        super(edge, oldValue, newValue);
-    }
-
-    @Override
-    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        listener.edgePropertyChanged((Edge) element, oldValue, newValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java
deleted file mode 100644
index c82cf6b..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgePropertyRemovedEvent.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-
-/**
- * Event fired when an edge property is removed.
- *
- * @author Stephen Mallette
- */
-public class EdgePropertyRemovedEvent extends ElementPropertyEvent {
-
-    public EdgePropertyRemovedEvent(final Edge element, final Property removed) {
-        super(element, removed, null);
-    }
-
-    @Override
-    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        listener.edgePropertyRemoved((Edge) element, oldValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java
deleted file mode 100644
index 74c0b7e..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/EdgeRemovedEvent.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Edge;
-
-import java.util.Iterator;
-
-/**
- * Event fired when an edge is removed.
- *
- * @author Stephen Mallette
- */
-public class EdgeRemovedEvent implements Event {
-
-    private final Edge edge;
-
-    public EdgeRemovedEvent(final Edge edge) {
-        this.edge = edge;
-    }
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            eventListeners.next().edgeRemoved(edge);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyChangedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyChangedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyChangedEvent.java
deleted file mode 100644
index b56cbec..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyChangedEvent.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.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public abstract class ElementPropertyChangedEvent extends ElementPropertyEvent {
-
-    public ElementPropertyChangedEvent(final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        super(element, oldValue, newValue, vertexPropertyKeyValues);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.java
deleted file mode 100644
index 8bab91c..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/ElementPropertyEvent.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 org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-
-import java.util.Iterator;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public abstract class ElementPropertyEvent implements Event {
-
-    private final Element element;
-    private final Property oldValue;
-    private final Object newValue;
-    private final Object[] vertexPropertyKeyValues;
-
-    public ElementPropertyEvent(final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        this.element = element;
-        this.oldValue = oldValue;
-        this.newValue = newValue;
-        this.vertexPropertyKeyValues = vertexPropertyKeyValues;
-    }
-
-    abstract void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues);
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            fire(eventListeners.next(), element, oldValue, newValue, vertexPropertyKeyValues);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
index 0bbb053..26db28a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/Event.java
@@ -18,13 +18,233 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Element;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Property;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+
 import java.util.Iterator;
 
 /**
+ * A representation of some mutation action that occurs on a {@link Graph} for a {@link Traversal}.
+ *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public interface Event {
 
-    public void fireEvent(final Iterator<MutationListener> eventListeners);
+    /**
+     * An {@code Event} publishes its action to all the event {@link MutationListener} objects.
+     */
+    void fireEvent(final Iterator<MutationListener> eventListeners);
+
+    /**
+     * Represents an action where an {@link Edge} is added to the {@link Graph}.
+     */
+    class EdgeAddedEvent implements Event {
+
+        private final Edge edge;
+
+        public EdgeAddedEvent(final Edge edge) {
+            this.edge = edge;
+        }
+
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                eventListeners.next().edgeAdded(edge);
+            }
+        }
+    }
+
+    /**
+     * Represents an action where an {@link Edge} {@link Property} is added/modified.  If the {@link Property} is
+     * new then the {@code oldValue} will be {@code null}.
+     */
+    class EdgePropertyChangedEvent extends ElementPropertyChangedEvent {
+
+        public EdgePropertyChangedEvent(final Edge edge, final Property oldValue, final Object newValue) {
+            super(edge, oldValue, newValue);
+        }
+
+        @Override
+        void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            listener.edgePropertyChanged((Edge) element, oldValue, newValue);
+        }
+    }
+
+    /**
+     * Represents an action where an {@link Edge} {@link Property} is removed.
+     */
+    class EdgePropertyRemovedEvent extends ElementPropertyEvent {
+
+        public EdgePropertyRemovedEvent(final Edge element, final Property removed) {
+            super(element, removed, null);
+        }
+
+        @Override
+        void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            listener.edgePropertyRemoved((Edge) element, oldValue);
+        }
+    }
+
+    /**
+     * Represents an action where an {@link Edge} is removed from the {@link Graph}.
+     */
+    class EdgeRemovedEvent implements Event {
+
+        private final Edge edge;
+
+        public EdgeRemovedEvent(final Edge edge) {
+            this.edge = edge;
+        }
+
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                eventListeners.next().edgeRemoved(edge);
+            }
+        }
+    }
+
+    /**
+     * Represents an action where a {@link Vertex} is removed from the {@link Graph}.
+     */
+    class VertexAddedEvent implements Event {
+
+        private final Vertex vertex;
+
+        public VertexAddedEvent(final Vertex vertex) {
+            this.vertex = vertex;
+        }
+
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                eventListeners.next().vertexAdded(vertex);
+            }
+        }
+    }
+
+    /**
+     * Represents an action where a {@link VertexProperty} is modified on a {@link Vertex}.
+     */
+    class VertexPropertyChangedEvent extends ElementPropertyChangedEvent {
+
+        public VertexPropertyChangedEvent(final Vertex element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            super(element, oldValue, newValue, vertexPropertyKeyValues);
+        }
+
+        @Override
+        void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            listener.vertexPropertyChanged((Vertex) element, oldValue, newValue, vertexPropertyKeyValues);
+        }
+    }
+
+    /**
+     * Represents an action where a {@link Property} is modified on a {@link VertexProperty}.
+     */
+    class VertexPropertyPropertyChangedEvent extends ElementPropertyChangedEvent {
+
+        public VertexPropertyPropertyChangedEvent(final VertexProperty element, final Property oldValue, final Object newValue) {
+            super(element, oldValue, newValue);
+        }
+
+        @Override
+        void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            listener.vertexPropertyPropertyChanged((VertexProperty) element, oldValue, newValue);
+        }
+    }
+
+    /**
+     * Represents an action where a {@link Property} is removed from a {@link VertexProperty}.
+     */
+    class VertexPropertyPropertyRemovedEvent extends ElementPropertyEvent {
+
+        public VertexPropertyPropertyRemovedEvent(final VertexProperty element, final Property removed) {
+            super(element, removed, null);
+        }
+
+        @Override
+        void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            listener.vertexPropertyPropertyRemoved((VertexProperty) element, oldValue);
+        }
+    }
+
+    /**
+     * Represents an action where a {@link Property} is removed from a {@link Vertex}.
+     */
+    class VertexPropertyRemovedEvent implements Event {
+
+        private final VertexProperty vertexProperty;
+
+        public VertexPropertyRemovedEvent(final VertexProperty vertexProperty) {
+            this.vertexProperty = vertexProperty;
+        }
+
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                eventListeners.next().vertexPropertyRemoved(vertexProperty);
+            }
+        }
+    }
+
+    /**
+     * Represents an action where a {@link Vertex} is removed from the {@link Graph}.
+     */
+    class VertexRemovedEvent implements Event {
+
+        private final Vertex vertex;
+
+        public VertexRemovedEvent(final Vertex vertex) {
+            this.vertex = vertex;
+        }
+
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                eventListeners.next().vertexRemoved(vertex);
+            }
+        }
+    }
+
+    /**
+     * A base class for {@link Property} mutation events.
+     */
+    abstract class ElementPropertyChangedEvent extends ElementPropertyEvent {
+
+        public ElementPropertyChangedEvent(final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            super(element, oldValue, newValue, vertexPropertyKeyValues);
+        }
+    }
+
+    /**
+     * A base class for {@link Property} mutation events.
+     */
+    abstract class ElementPropertyEvent implements Event {
+
+        private final Element element;
+        private final Property oldValue;
+        private final Object newValue;
+        private final Object[] vertexPropertyKeyValues;
+
+        public ElementPropertyEvent(final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
+            this.element = element;
+            this.oldValue = oldValue;
+            this.newValue = newValue;
+            this.vertexPropertyKeyValues = vertexPropertyKeyValues;
+        }
+
+        abstract void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues);
 
+        @Override
+        public void fireEvent(final Iterator<MutationListener> eventListeners) {
+            while (eventListeners.hasNext()) {
+                fire(eventListeners.next(), element, oldValue, newValue, vertexPropertyKeyValues);
+            }
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java
deleted file mode 100644
index aa2dbdc..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexAddedEvent.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-
-import java.util.Iterator;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexAddedEvent implements Event {
-
-    private final Vertex vertex;
-
-    public VertexAddedEvent(final Vertex vertex) {
-        this.vertex = vertex;
-    }
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            eventListeners.next().vertexAdded(vertex);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java
deleted file mode 100644
index caf96c4..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyChangedEvent.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexPropertyChangedEvent extends ElementPropertyChangedEvent {
-
-    public VertexPropertyChangedEvent(final Vertex element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        super(element, oldValue, newValue, vertexPropertyKeyValues);
-    }
-
-    @Override
-    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        listener.vertexPropertyChanged((Vertex) element, oldValue, newValue, vertexPropertyKeyValues);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java
deleted file mode 100644
index 633f01b..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyChangedEvent.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexPropertyPropertyChangedEvent extends ElementPropertyChangedEvent {
-
-    public VertexPropertyPropertyChangedEvent(final VertexProperty element, final Property oldValue, final Object newValue) {
-        super(element, oldValue, newValue);
-    }
-
-    @Override
-    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        listener.vertexPropertyPropertyChanged((VertexProperty) element, oldValue, newValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java
deleted file mode 100644
index e7efec7..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyPropertyRemovedEvent.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexPropertyPropertyRemovedEvent extends ElementPropertyEvent {
-
-    public VertexPropertyPropertyRemovedEvent(final VertexProperty element, final Property removed) {
-        super(element, removed, null);
-    }
-
-    @Override
-    void fire(final MutationListener listener, final Element element, final Property oldValue, final Object newValue, final Object... vertexPropertyKeyValues) {
-        listener.vertexPropertyPropertyRemoved((VertexProperty) element, oldValue);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java
deleted file mode 100644
index 0282a1b..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexPropertyRemovedEvent.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-
-import java.util.Iterator;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexPropertyRemovedEvent implements Event {
-
-    private final VertexProperty vertexProperty;
-
-    public VertexPropertyRemovedEvent(final VertexProperty vertexProperty) {
-        this.vertexProperty = vertexProperty;
-    }
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            eventListeners.next().vertexPropertyRemoved(vertexProperty);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/010fee5f/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java
deleted file mode 100644
index 067ab0c..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/event/VertexRemovedEvent.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.util.event;
-
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-
-import java.util.Iterator;
-
-/**
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public class VertexRemovedEvent implements Event {
-
-    private final Vertex vertex;
-
-    public VertexRemovedEvent(final Vertex vertex) {
-        this.vertex = vertex;
-    }
-
-    @Override
-    public void fireEvent(final Iterator<MutationListener> eventListeners) {
-        while (eventListeners.hasNext()) {
-            eventListeners.next().vertexRemoved(vertex);
-        }
-    }
-}