code: def accept(self, visitor: "BaseVisitor[ResultT]") -> ResultT:
          
          if visitor.begin_game() is not SKIP:
              for tagname, tagvalue in self.headers.items():
                  visitor.visit_header(tagname, tagvalue)
              if visitor.end_headers() is not SKIP:
                  board = self.board()
                  visitor.visit_board(board)
  
                  if self.comment:
                      visitor.visit_comment(self.comment)
  
                  if self.variations:
                      self.variations[0].accept(visitor, _parent_board=board)
  
                  visitor.visit_result(self.headers.get("Result", "*"))
  
          visitor.end_game()
          return visitor.result()
docs: Traverses the game in PGN order using the given *visitor*. Returns
          the *visitor* result.