public function associatedRecords(ActiveRecord $Record)
 {
     $referenceRecord = $Record->getRecord();
     $foreignKey = $this->_Association->getDefinition('foreignKey');
     if (is_null($referenceRecord[$foreignKey])) {
         return array(null);
     }
     // The record has a foreign key, but has not the associated Active Record.
     // First try to find the Active Record in the pool, if not query it.
     $relatedRecord = ActiveRecordManager::findActiveRecordInPool($this->_Association->getModel(), $referenceRecord[$foreignKey]);
     if ($relatedRecord === false) {
         $relatedRecord = $this->_Association->getModel()->find('first', array('conditions' => array($this->_Association->getPrimaryKey() => $referenceRecord[$foreignKey]), 'recursive' => -1, 'activeRecord' => false));
         if ($relatedRecord) {
             $relatedRecord = ActiveRecordManager::getActiveRecord($this->_Association->getModel(), $relatedRecord);
         } else {
             $relatedRecord = null;
         }
     }
     return array($relatedRecord);
 }
 /**
  * if the record is associated with another record and this record 
  * not the same as referenced record: find this record, and remove the association
  * 
  * @see AssociationsTest::testCrossAssociation
  * 
  * @param ActiveRecord $Record
  * @param ActiveRecord $ReferenceRecord
  * @param string $foreignKey
  * @return void
  */
 protected function _removeOldAssociation(ActiveRecord $Record, ActiveRecord $ReferenceRecord, $foreignKey)
 {
     $foreignKeyValue = $Record->getRecord()[$foreignKey];
     if (empty($foreignKeyValue)) {
         return;
     }
     $AssociatedRecord = ActiveRecordManager::findActiveRecordInPool($this->_Association->getRecord()->getModel(), $foreignKeyValue);
     if (!$AssociatedRecord || $ReferenceRecord === $AssociatedRecord) {
         return;
     }
     $assoctiation = $AssociatedRecord->{$this->_Association->getName()};
     if ($assoctiation) {
         $assoctiation->remove($Record);
     }
 }