/**
  * The returned array will contain objects of the default type or
  * objects that inherit from the default.
  *
  * @param DataFetcherInterface $dataFetcher
  * @return array
  * @throws PropelException Any exceptions caught during processing will be
  *                         rethrown wrapped into a PropelException.
  */
 public static function populateObjects(DataFetcherInterface $dataFetcher)
 {
     $results = array();
     // set the class once to avoid overhead in the loop
     $cls = static::getOMClass(false);
     // populate the object(s)
     while ($row = $dataFetcher->fetch()) {
         $key = CompositionEntityTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType());
         if (null !== ($obj = CompositionEntityTableMap::getInstanceFromPool($key))) {
             // We no longer rehydrate the object, since this can cause data loss.
             // See http://www.propelorm.org/ticket/509
             // $obj->hydrate($row, 0, true); // rehydrate
             $results[] = $obj;
         } else {
             /** @var CompositionEntity $obj */
             $obj = new $cls();
             $obj->hydrate($row);
             $results[] = $obj;
             CompositionEntityTableMap::addInstanceToPool($obj, $key);
         }
         // if key exists
     }
     return $results;
 }