public function fetchRecords($searchRule, &$resultRecords, $count = -1, $offset = 0, $clearSearchRule = true, $noAssociation = false)
    {
        if ($count == 0)
            return;
        $curRecord = $this->currentRecord;
        $recId = $this->recordId;
        $oldSearchRule = $this->searchRule;
        $this->currentRecord = null;
        if ($clearSearchRule)
            $this->clearSearchRule();
        $this->setSearchRule($searchRule);
        if ($noAssociation) {
            $oldAssociation = $this->association;
            $this->association = null;
        }
        $limit = ($count == -1) ? null : array('count' => $count, 'offset' => $offset);

        $resultRecords = array();

        $resultSet = $this->_run_search($limit);
        if ($resultSet !== null) {
            while ($recArray = $this->_fetch_record($resultSet)) {
                $resultRecords[] = $recArray;
            }
        }
        if ($noAssociation) {
            $this->association = $oldAssociation;
        }
        $this->searchRule = $oldSearchRule;
        $this->currentRecord = $curRecord;
        $this->recordId = $recId;
        return true;
    }