/**
  * Construct a new xPDOIterator instance (do not call directly).
  *
  * @see xPDO::getIterator()
  * @param xPDO &$xpdo A reference to a valid xPDO instance.
  * @param array $options An array of options for the iterator.
  * @return xPDOIterator An xPDOIterator instance.
  */
 function __construct(&$xpdo, array $options = array())
 {
     $this->xpdo =& $xpdo;
     if (isset($options['class'])) {
         $this->class = $this->xpdo->loadClass($options['class']);
     }
     if (isset($options['alias'])) {
         $this->alias = $options['alias'];
     } else {
         $this->alias = $this->class;
     }
     if (isset($options['cacheFlag'])) {
         $this->cacheFlag = $options['cacheFlag'];
     }
     if (array_key_exists('criteria', $options) && is_object($options['criteria'])) {
         $this->criteria = $options['criteria'];
     } elseif (!empty($this->class)) {
         $criteria = array_key_exists('criteria', $options) ? $options['criteria'] : null;
         $this->criteria = $this->xpdo->getCriteria($this->class, $criteria, $this->cacheFlag);
     }
     if (!empty($this->criteria)) {
         $this->criteriaType = $this->xpdo->getCriteriaType($this->criteria);
         if ($this->criteriaType === 'xPDOQuery') {
             $this->class = $this->criteria->getClass();
             $this->alias = $this->criteria->getAlias();
         }
     }
 }