anchor.diff:  those without incoming edges). Second, all results save the last one can be ignored to that point (i.e. the last one is
   the one at the deepest point in the tree). In this way, the path and path length only need to be calculated for a
   single result.
  +
  +The previous approaches to calculating the maximum depth use path calculations to achieve the answer. Path calculations
  +can be expensive and if possible avoided if they are not needed. Another way to express a traversal that calculates
  +the maximum depth is to use the `sack()` step:
  +
  +[gremlin-groovy,existing]
  +----
  +g.withSack(1).V().has('name','F').
  +  repeat(__.in().sack(sum).by(constant(1))).emit().
  +  sack().max()
  +g.withSack(1).V().has('name','C').
  +  repeat(__.in().sack(sum).by(constant(1))).emit().
  +  sack().max()
  +----
   
   === Time-based Indexing
   
  
positive.code: ----
  
  image:gremlin-max-depth.png[float=right,width=350]The traversals shown above are fairly straightforward. The traversal
  beings at a particlar starting vertex, traverse in on the "hasParent" edges emitting all vertices as it goes. It
  calculates the path length and then selects the longest one. While this approach is quite direct, there is room for
  improvement:
  
  
negative.code:   select(keys).limit(1)
  ----
  
  <1> The main difference for OLAP is the use of `aggregate()` over the mid-traversal `V()`.
  
  === Maximum Depth
  
  