anchor.diff:  
   [gremlin-groovy,modern]
   ----
  -g.V().has(outE('created').or().outE('knows')).values('name')
  +g.V().where(outE('created').or().outE('knows')).values('name')
   ----
   
   [[order-step]]
  
positive.code: <1> Find all vertices whose ages are between 20 (inclusive) and 30 (exclusive).
  <2> Find all vertices whose ages are not between 20 (inclusive) and 30 (exclusive).
  
  It is also possible to filter any arbitrary object based on a anonymous traversal yielding at least one result.
  
  [gremlin-groovy,modern]
  ----
  g.V().has(out('created')).values('name') <1>
  g.V().out('knows').has(out('created')).values('name') <2>
  g.V().has(out('created').count().is(gte(2L))).values('name') <3>
  g.V().has(out('knows').has(out('created'))).values('name') <4>
  ----
  
  <1> What are the names of the people who have created a project?
  <2> What are the names of the people that are known by someone one and have created a project?
  <3> What are the names of the people how have created two or more projects?
  <4> What are the names of the people who know someone that has created a project? (This only works in OLTP -- see the `WARNING` below)
  
  WARNING: The anonymous traversal of `has()` processes the current object "locally". In OLAP, where the atomic unit of computing is the the vertex and its local "star graph," it is important that the anonymous traversal does not leave the confines of the vertex's star graph. In other words, it can not traverse to an adjacent vertex's properties or edges.
  
  [[inject-step]]
  Inject Step
  ~~~~~~~~~~~
  
negative.code:   * `hasValue(values...)`: Remove the traverser if its property does not have any of the values.
    * `has(key)`: Remove the traverser if its element has a value for the key.
    * `hasNot(key)`: Remove the traverser if its element does not have a value for the  key.
    * `has(key, traversal)`: Remove the traverser if its object does not yield a result through the traversal off the property value.
  
  [gremlin-groovy,modern]
  ----
  