@Override
 @SuppressFBWarnings(value = "RV_NEGATING_RESULT_OF_COMPARETO", justification = "Intentional")
 public int compare(ExecRow o1, ExecRow o2) {
   DataValueDescriptor[] a1 = o1.getRowArray();
   DataValueDescriptor[] a2 = o2.getRowArray();
   for (int i = 0; i < a1.length; ++i) {
     DataValueDescriptor c1 = a1[i];
     DataValueDescriptor c2 = a2[i];
     int result;
     try {
       result = c1.compare(c2, nullsOrderedLow == null ? true : nullsOrderedLow[i]);
     } catch (StandardException e) {
       throw new RuntimeException(e);
     }
     if (result != 0) {
       return descColumns == null || !descColumns[i] ? result : -result;
     }
   }
   return 0;
 }