code: def assertAstMatches(self, actual_node, expected_node_src, expr=True):
      if expr:
          # Ensure multi-line expressions parse.
          expected_node = gast.parse(
              "({})".format(expected_node_src)
          ).body[0]
          expected_node = expected_node.value
      else:
          expected_node = gast.parse(expected_node_src).body[0]
  
      msg = "AST did not match expected:\n{}\nActual:\n{}".format(
          pretty_printer.fmt(expected_node),
          pretty_printer.fmt(actual_node),
      )
      self.assertTrue(ast_util.matches(actual_node, expected_node), msg)
  
imports: import re
  import textwrap
  import gast
  from tensorflow.python.autograph.pyct import ast_util
  from tensorflow.python.autograph.pyct import errors
  from tensorflow.python.autograph.pyct import parser
  from tensorflow.python.autograph.pyct import pretty_printer
  from tensorflow.python.platform import test
label_desc: Use image node_id 1 for calling the ParserTest obj's underlying member method code with example usage: obj.assertAstMatches(actual_node, expected_node_src, expr) without return types