code: private static List<Set<Integer>> createFinalAggregates(
                  List<Set<Integer>> C, List<Set<Integer>> N, boolean[] R) {
  
              for (int i = 0; i < R.length; ++i) {
  
                  // Skip non-free nodes
                  if (!R[i])
                      continue;
  
                  // Create new aggregate from the nodes in N[i] which are free
                  Set<Integer> Cn = new HashSet<Integer>();
                  for (int j : N.get(i))
                      if (R[j]) {
                          R[j] = false;
                          Cn.add(j);
                      }
  
                  if (!Cn.isEmpty())
                      C.add(Cn);
              }
  
              return C;
          }
docs: Creates final aggregates from the remaining unallocated nodes