@Test
  public void testSubgroupsOrder() {

    Collection<Symmetry4D> groups = Symmetry4D.getSymmetries();

    int subgroupCounter;
    boolean isSubgroup;
    Collection<Rotation4D> groupMembers;
    Collection<? extends Symmetry<Point4D>> subgroups;

    for (Symmetry4D g : groups) {
      subgroupCounter = 0;
      subgroups = g.subgroups();
      groupMembers = Symmetry4D.groups.get(g);
      for (Symmetry4D f : groups) {
        isSubgroup = true;
        for (Rotation4D rot : Symmetry4D.groups.get(f)) {
          if (!groupMembers.contains(rot)) {
            isSubgroup = false;
            break;
          }
        }
        if (isSubgroup) {
          subgroupCounter++;
          assertTrue(subgroups.contains(f));
        }
      }
      assertEquals(subgroupCounter, g.subgroups().size());
    }
  }