code: def accept_subgame(self, visitor: "BaseVisitor[ResultT]") -> ResultT:
          
          if visitor.begin_game() is not SKIP:
              game = self.root()
              board = self.board()
  
              dummy_game = Game.without_tag_roster()
              dummy_game.setup(board)
  
              visitor.begin_headers()
  
              for tagname, tagvalue in game.headers.items():
                  if tagname not in dummy_game.headers:
                      visitor.visit_header(tagname, tagvalue)
              for tagname, tagvalue in dummy_game.headers.items():
                  visitor.visit_header(tagname, tagvalue)
  
              if visitor.end_headers() is not SKIP:
                  visitor.visit_board(board)
  
                  if self.variations:
                      self.variations[0].accept(visitor, _parent_board=board)
  
                  visitor.visit_result(game.headers.get("Result", "*"))
  
          visitor.end_game()
          return visitor.result()
docs: Traverses headers and game nodes in PGN order, as if the game was
          starting after this node. Returns the *visitor* result.