class CatchupGoal {

    boolean achieved( FollowerState followerState )
    {
        if ( followerState.getMatchIndex() >= targetIndex )
        {
            if ( (clock.millis() - startTime) <= electionTimeout )
            {
                return true;
            }
            else if ( roundCount <  MAX_ROUNDS )
            {
                roundCount++;
                startTime = clock.millis();
                targetIndex = raftLog.appendIndex();
            }
        }
        return false;
    }

      CatchupGoal( ReadableRaftLog raftLog, Clock clock, long electionTimeout );

}