private @NotNull List<EqClassImpl> splitEqClass(EqClass eqClass, DfaMemoryStateImpl other) {
    Int2ObjectMap<EqClassImpl> groupsInClasses = new Int2ObjectOpenHashMap<>();
    List<EqClassImpl> groups = new ArrayList<>();
    for (DfaVariableValue value : eqClass.asList()) {
      int otherClass = other.getEqClassIndex(value);
      EqClassImpl list;
      if (otherClass == -1) {
        list = new EqClassImpl(myFactory);
        groups.add(list);
      }
      else {
        list = groupsInClasses.get(otherClass);
        if (list == null) {
          list = new EqClassImpl(myFactory);
          groupsInClasses.put(otherClass, list);
        }
      }
      list.add(value.getID());
    }
    groups.addAll(groupsInClasses.values());
    return groups;
  }
private @NotNull List<EqClassImpl> splitEqClass(EqClass eqClass, DfaMemoryStateImpl other)