code: protected <T> T processSelectGroup(T obj, String groupName, Collection<CpoWhere> wheres, Collection<CpoOrderBy> orderBy, Collection<CpoNativeFunction> nativeExpressions) throws CpoException {
      Session session = null;
      T result = null;
  
      try {
        session = getReadSession();
        result = processSelectGroup(obj, groupName, wheres, orderBy, nativeExpressions, session);
      } catch (Exception e) {
        ExceptionHelper.reThrowCpoException(e, "processSelectGroup(Object obj, String groupName) failed");
      }
  
      return result;
    }
docs: Retrieves the Object from the datasource.
  
  @param obj               This is an object that has been defined within the metadata of the datasource. If the class is not
  defined an exception will be thrown. The input object is used to specify the search criteria.
  @param groupName         The name which identifies which RETRIEVE Function Group to execute to retrieve the object.
  @param wheres            A collection of CpoWhere objects to be used by the function
  @param orderBy           A collection of CpoOrderBy objects to be used by the function
  @param nativeExpressions A collection of CpoNativeFunction objects to be used by the function
  @return A populated object of the same type as the Object passed in as a argument. If no objects match the criteria
  a NULL will be returned.
  @throws CpoException the retrieve function defined for this objects returns more than one row, an exception will be
  thrown.