docs: private List<CLIQUESubspace> findDenseSubspaceCandidates(Relation<? extends NumberVector> database, List<CLIQUESubspace> denseSubspaces) {
      // sort (k-1)-dimensional dense subspace according to their dimensions
      List<CLIQUESubspace> denseSubspacesByDimensions = new ArrayList<>(denseSubspaces);
      Collections.sort(denseSubspacesByDimensions, Subspace.DIMENSION_COMPARATOR);
  
      // determine k-dimensional dense subspace candidates
      double all = database.size();
      List<CLIQUESubspace> denseSubspaceCandidates = new ArrayList<>();
  
      while(!denseSubspacesByDimensions.isEmpty()) {
        CLIQUESubspace s1 = denseSubspacesByDimensions.remove(0);
        for(CLIQUESubspace s2 : denseSubspacesByDimensions) {
          CLIQUESubspace s = s1.join(s2, all, tau);
          if(s != null) {
            denseSubspaceCandidates.add(s);
          }
        }
      }
  
      // sort reverse by coverage
      Collections.sort(denseSubspaceCandidates, CLIQUESubspace.BY_COVERAGE);
      return denseSubspaceCandidates;
    }