code: protected <T, C> List<T> processSelectGroup(String name, C criteria, T result, Collection<CpoWhere> wheres, Collection<CpoOrderBy> orderBy, Collection<CpoNativeFunction> nativeExpressions,
                                                boolean useRetrieve) throws CpoException {
      Connection con = null;
      CpoArrayResultSet<T> resultSet = new CpoArrayResultSet<>();
  
      try {
        con = getReadConnection();
        processSelectGroup(name, criteria, result, wheres, orderBy, nativeExpressions, con, useRetrieve, resultSet);
        // The select may have a for update clause on it
        // Since the connection is cached we need to get rid of this
        commitLocalConnection(con);
      } catch (Exception e) {
        // Any exception has to try to rollback the work;
        rollbackLocalConnection(con);
        ExceptionHelper.reThrowCpoException(e, "processSelectGroup(String name, Object criteria, Object result,CpoWhere where, Collection orderBy, boolean useRetrieve) failed");
      } finally {
        closeLocalConnection(con);
      }
  
      return resultSet;
    }
docs: DOCUMENT ME!
  
  @param name        DOCUMENT ME!
  @param criteria    DOCUMENT ME!
  @param result      DOCUMENT ME!
  @param wheres      DOCUMENT ME!
  @param orderBy     DOCUMENT ME!
  @param useRetrieve DOCUMENT ME!
  @return DOCUMENT ME!
  @throws CpoException DOCUMENT ME!