public function loadCompletedTokensBatch(\Gems_Task_TaskRunnerBatch $batch, $respondentId = null, $userId = null, $orgId = null, $quickCheck = false)
    {
        $userId = $this->_checkUserId($userId);

        $tokenSelect = $this->getTokenSelect(array('gto_id_token'));
        $tokenSelect->onlyActive($quickCheck)
                    ->forRespondent($respondentId)
                    ->andSurveys(array('gsu_surveyor_id'))
                    ->forWhere('gsu_surveyor_active = 1')
                    ->order('gsu_surveyor_id');

        if (null !== $orgId) {
            $tokenSelect->forWhere('gto_id_organization = ?', $orgId);
        }

        $statement = $tokenSelect->getSelect()->query();
        //Process one row at a time to prevent out of memory errors for really big resultsets
        $tokens = array();
        $tokencount = 0;
        $activeId = 0;
        $maxCount = 100;    // Arbitrary value, change as needed
        while ($tokenData = $statement->fetch()) {
            $tokenId = $tokenData['gto_id_token'];
            $surveyorId = $tokenData['gsu_surveyor_id'];
            if ($activeId <> $surveyorId || count($tokens) > $maxCount) {
                // Flush
                if (count($tokens)> 0) {
                    $batch->addTask('Tracker_BulkCheckTokenCompletion', $tokens, $userId);
                }

                $activeId = $surveyorId;
                $tokens = array();
            }
            $tokens[] = $tokenId;

            $batch->addToCounter('tokens');
        }
        if (count($tokens)> 0) {
            $batch->addTask('Tracker_BulkCheckTokenCompletion', $tokens, $userId);
        }
    }