public Object evaluate(Object data, ExecutionContext context) {
    Object value;
    if (columnIndex > 0) {
      value = ((Object[]) data)[columnIndex];
    } else if (columnIndex == 0) {
      if (data instanceof Object[]) {
        value = ((Object[]) data)[columnIndex];
      } else {
        value = data;
      }
    } else {
      throw new IllegalStateException(" Order By Column attribute unmapped");
    }
    context.setCurrentProjectionField(value);
    try {
      return expr.evaluate(context);
    } catch (Exception e) {
      // TODO: never throw an anonymous inner class
      throw new CacheException(e) {};
    }
  }
evaluates sort criteria in order by clause
geode-core/src/main/java/org/apache/geode/cache/query/internal/CompiledSortCriterion.java