code: private List<PathEdge> combine(final List<PathEdge> edges, final int x) {
  
          final int n = edges.size();
          final List<PathEdge> reduced = new ArrayList<PathEdge>(n);
  
          for (int i = 0; i < n; i++) {
              PathEdge e = edges.get(i);
              for (int j = i + 1; j < n; j++) {
                  PathEdge f = edges.get(j);
                  if (e.disjoint(f)) reduced.add(new ReducedEdge(e, f, x));
              }
          }
  
          return reduced;
      }
docs: Pairwise combination of all disjoint <i>edges</i> incident to a vertex
  <i>x</i>.
  
  @param edges edges which are currently incident to <i>x</i>
  @param x     a vertex in the graph
  @return reduced edges