public function getIterator($alias, $criteria= null, $cacheFlag= true) {
        $iterator = false;
        $fkMeta= $this->getFKDefinition($alias);
        if ($fkMeta) {
            $fkCriteria = isset($fkMeta['criteria']) && isset($fkMeta['criteria']['foreign']) ? $fkMeta['criteria']['foreign'] : null;
            if ($criteria === null) {
                $criteria= array($fkMeta['foreign'] => $this->get($fkMeta['local']));
                if ($fkCriteria !== null) {
                    $criteria = array($fkCriteria, $criteria);
                }
            } else {
                $criteria= $this->xpdo->newQuery($fkMeta['class'], $criteria);
                $addCriteria = array("{$criteria->getAlias()}.{$fkMeta['foreign']}" => $this->get($fkMeta['local']));
                if ($fkCriteria !== null) {
                    $fkAddCriteria = array();
                    foreach ($fkCriteria as $fkCritKey => $fkCritVal) {
                        if (is_numeric($fkCritKey)) continue;
                        $fkAddCriteria["{$criteria->getAlias()}.{$fkCritKey}"] = $fkCritVal;
                    }
                    if (!empty($fkAddCriteria)) {
                        $addCriteria = array($fkAddCriteria, $addCriteria);
                    }
                }
                $criteria->andCondition($addCriteria);
            }
            $iterator = $this->xpdo->getIterator($fkMeta['class'], $criteria, $cacheFlag);
        }
        return $iterator;
    }