code: def is_fivefold_repetition(self) -> bool:
          
          transposition_key = self._transposition_key()
          repetitions = 1
          switchyard = []
  
          while self.move_stack and repetitions < 5:
              move = self.pop()
              switchyard.append(move)
  
              if self.is_irreversible(move):
                  break
  
              if self._transposition_key() == transposition_key:
                  repetitions += 1
  
          while switchyard:
              self.push(switchyard.pop())
  
          return repetitions >= 5
docs: Since the 1st of July 2014 a game is automatically drawn (without
          a claim by one of the players) if a position occurs for the fifth time.
          Originally this had to occur on consecutive alternating moves, but
          this has since been revised.