private void passToken() {
        activity = true;
        if (silence() < Constants.USAGE_TIMEOUT && eventCount > Constants.MIN_OCTETS) {
            // SawTokenUser
            //            debug("passToken:SawTokenUser");
            if (LOG.isLoggable(Level.FINE))
                LOG.fine(thisStation + " passToken:SawTokenUser");
            state = MasterNodeState.idle;
        }
        else if (silence() >= Constants.USAGE_TIMEOUT && retryCount < Constants.RETRY_TOKEN) {
            // RetrySendToken
            //            debug("passToken:RetrySendToken to " + nextStation);
            if (LOG.isLoggable(Level.FINE))
                LOG.fine(thisStation + " passToken:RetrySendToken");
            retryCount++;
            sendFrame(FrameType.token, nextStation);
            eventCount = 0;
        }
        else if (silence() >= Constants.USAGE_TIMEOUT && retryCount >= Constants.RETRY_TOKEN) {
            // FindNewSuccessor
            //            debug("passToken:FindNewSuccessor: trying " + adjacentStation(nextStation));
            if (LOG.isLoggable(Level.FINE))
                LOG.fine(thisStation + " passToken:FindNewSuccessor");
            pollStation = adjacentStation(nextStation);
            sendFrame(FrameType.pollForMaster, pollStation);
            nextStation = thisStation;
            retryCount = 0;
            tokenCount = 0;
            eventCount = 0;
            state = MasterNodeState.pollForMaster;
        }
    }