public function checkTokensFrom(\Gems_Tracker_RespondentTrack $respTrack, \Gems_Tracker_Token $startToken, $userId, \Gems_Tracker_Token $skipToken = null)
    {
        // Make sure the rounds are loaded
        $this->_ensureRounds();

        // Make sure the tokens are loaded and linked.
        $respTrack->getTokens();

        // Go
        $changed = 0;
        $token = $startToken;
        while ($token) {
            // \MUtil_Echo::track($token->getTokenId());
            //Only process the token when linked to a round
            $round   = false;
            $changes = 0;
            if (array_key_exists($token->getRoundId(), $this->_rounds)) {
                $round = $this->_rounds[$token->getRoundId()];
            }            

            if ($round && $token !== $skipToken) {
                $changes = $this->checkTokenDates($token, $round, $userId);
                $changes += $this->checkTokenCondition($token, $round, $userId);
            }            

            // If condition changed and dates changed, we only signal one change
            $changed += min($changes, 1);
            $token = $token->getNextToken();
        }

        return $changed;
    }