code: boolean orderByColumnsDetermineAllDisplayColumns(
              List<ParsedColInfo> displayColumns,
              List<ParsedColInfo> orderColumns,
              List<AbstractExpression> nonOrdered) {
          ArrayList<ParsedColInfo> candidateColumns = new ArrayList<>();
          for (ParsedColInfo displayCol : displayColumns) {
              if (displayCol.m_groupBy) {
                  AbstractExpression displayExpr = displayCol.m_expression;
                  // Round up the usual suspects
                  // -- if there were uncooperative GROUP BY expressions,
                  // they will often also be uncooperative
                  // display column expressions.
                  for (AbstractExpression nonStarter : nonOrdered) {
                      if (displayExpr.equals(nonStarter)) {
                          return false;
                      }
                  }
                  // A GROUP BY expression that was not nonOrdered must be covered.
                  continue;
              }
              candidateColumns.add(displayCol);
          }
          return orderByColumnsDetermineAllColumns(
                  orderColumns, candidateColumns, null);
      }
docs: Returns true if the specified set of "display columns" passed in by caller
  will be determistically ordered if sorting by the specified set of columns
  from an "ORDER BY" clause.  Note that the ORDER BY columns could be from an
  set operator (UNION, INTERSECT, etc) that has this select statement as a child.
  
  @param displayColumns  The set of display columns whose order we care about
  @param orderColumns    The columns that we are ordering by
  @param nonOrdered      Columns whose values are known to appear in
  non-deterministic order
  @return true if the given order by columns will determine
  the order of the given display columns