code: private int resolveOrder(String path) throws CyclicDependencyException
      {
          m_seen = true;
          try
          {
              int highOrder = -1;
              for (Vertex<T> dv : m_dependencies)
              {
                  if (dv.m_seen)
                  {
                      throw new CyclicDependencyException(path + " -> "
                              + dv.getName());
                  }
                  else
                  {
                      highOrder = Math.max(highOrder, dv.resolveOrder(path
                              + " -> " + dv.getName()));
                  }
              }
  
              // Set this order so it is one higher than the highest dependency.
              m_order = highOrder + 1;
              return m_order;
          }
          finally
          {
              m_seen = false;
          }
      }
docs: Recursively searches for cycles by travelling down the dependency lists
  of this vertex, looking for the start vertex.
  
  @param path The path to the Vertex.  It is worth the load as it makes a
  descriptive error message possible.
  
  @return The highest order of any of the dependent vertices.
  
  @throws CyclicDependencyException If a cyclic dependency is discovered.