private List<Grouping> getDowngradeGroupsForNonrolling() {
    return new ArrayList<>(groups);
  }
Calculates the group orders when performing a rolling downgrade
<ul>
  <li>ClusterGroupings must remain at the same positions (first/last).</li>
  <li>When there is a ServiceCheck group, it must ALWAYS follow the same</li>
      preceding group, whether for an upgrade or a downgrade.</li>
  <li>All other groups must follow the reverse order.</li>
</ul>
For example, give the following order of groups:
<ol>
  <li>PRE_CLUSTER</li>
  <li>ZK</li>
  <li>CORE_MASTER</li>
  <li>SERVICE_CHECK_1</li>
  <li>CLIENTS</li>
  <li>FLUME</li>
  <li>SERVICE_CHECK_2</li>
  <li>POST_CLUSTER</li>
</ol>
The reverse would be:
<ol>
  <li>PRE_CLUSTER</li>
  <li>FLUME</li>
  <li>SERVICE_CHECK_2</li>
  <li>CLIENTS</li>
  <li>CORE_MASTER</li>
  <li>SERVICE_CHECK_1</li>
  <li>ZK</li>
  <li>POST_CLUSTER</li>
</ol>
@return the list of groups, reversed appropriately for a downgrade.
ambari-server/src/main/java/org/apache/ambari/server/stack/upgrade/UpgradePack.java