code: public Edge findEdge(final String fromId, final String toId, final boolean recursive) {
  
          Optional<Edge> toReturn = getEdges().stream()
                  .filter(c -> c.getId().equals(fromId) && c.getRightSideEdge().getId().equals(toId))
                  .findFirst();
  
          if (!toReturn.isPresent() && recursive) {
  
              // Does the Node with the given identifier exist in any Subgraph?
              toReturn = subgraphs.stream().map(c -> c.getStatements().findEdge(fromId, toId, true)).findFirst();
          }
  
          // All Done.
          return toReturn.orElse(null);
      }
docs: Finds the Edge with the supplied identifier within this Statements (and within any contained Subgraphs, if the
  {@code recursive} flag is true).
  
  @param fromId    The Node or Subgraph identifier of the starting point of the Edge to find.
  @param toId      The Node or Subgraph identifier of the finishing point of the Edge to find.
  @param recursive If {@code true}, the search should recurse into the Statements of Subgraphs.
  @return The Edge with the supplied identifier - or null if none was found.