code: private Map<Invariant, SortedSet<Integer>> getInvariants(Partition partition, Set<Integer> targetBlock) {
          Map<Invariant, SortedSet<Integer>> setList = new HashMap<Invariant, SortedSet<Integer>>();
          for (int u : partition.getCell(currentBlockIndex)) {
              Invariant h = refinable.neighboursInBlock(targetBlock, u);
              if (setList.containsKey(h)) {
                  setList.get(h).add(u);
              } else {
                  SortedSet<Integer> set = new TreeSet<Integer>();
                  set.add(u);
                  setList.put(h, set);
              }
          }
          return setList;
      }
docs: Gets the neighbor invariants for the block j as a map of
  |N<sub>g</sub>(v) &cap; T| to elements of the block j. That is, the
  size of the intersection between the set of neighbors of element v in
  the graph and the target block T.
  
  @param partition the current partition
  @param targetBlock the current target block of the partition
  @return a map of set intersection invariants to elements