docs: public List<Class<? extends RulePhase>> getAvailablePhases() {
          ArrayList<Class<? extends RulePhase>> phases = new ArrayList<>(this.cachedPhases.values());
          // It could be sorted by the real order.
          phases.sort(new Comparator()
          {
              @Override
              public int compare(Object phaseClass1, Object phaseClass2)
              {
                  if (phaseClass1 == null || !(phaseClass1 instanceof Class))
                      return -1;
                  if (phaseClass2 == null || !(phaseClass2 instanceof Class))
                      return 1;
  
                  String name1 = ((Class<? extends RulePhase>)phaseClass1).getSimpleName();
                  String name2 = ((Class<? extends RulePhase>)phaseClass2).getSimpleName();
                  return name1.compareToIgnoreCase(name2);
              }
          });
          return phases;
      }