code: private void addFused(long cycle) {
  
          // find index of first fused cycle
          int i = indexOfFused(0, cycle);
  
          if (i != -1) {
  
              // include the new cycle vertices and mark as fused
              cycles.set(i, cycle | cycles.get(i));
              fused.set(i, Boolean.TRUE);
  
              // merge other cycles we are share an edge with
              int j = i;
              while ((j = indexOfFused(j + 1, cycles.get(i))) != -1) {
                  cycles.set(i, cycles.remove(j) | cycles.get(i));
                  fused.remove(j);
                  j--; // removed a vertex, need to move back one
              }
          } else {
              // edge disjoint
              addIsolated(cycle);
          }
      }
docs: Adds a <i>potentially</i> fused cycle. If the cycle is discovered not be
  fused it will still be added as isolated.
  
  @param cycle vertex set of a potentially fused cycle, indicated by the
  set bits