code: def test_replacement(self):
      def foo(a):
          return a
  
      def test_fn(a):
          a = foo(a)
          return a
  
      node = self._parse_and_analyze(test_fn)
      fn_body = node.body
  
      param = node.args.args[0]
      source = fn_body[0].value.args[0]
      target = fn_body[0].targets[0]
      retval = fn_body[1].value
      self.assertSameDef(param, source)
      self.assertNotSameDef(source, target)
      self.assertSameDef(target, retval)
  
imports: from tensorflow.python.autograph.pyct import anno
  from tensorflow.python.autograph.pyct import cfg
  from tensorflow.python.autograph.pyct import naming
  from tensorflow.python.autograph.pyct import parser
  from tensorflow.python.autograph.pyct import qual_names
  from tensorflow.python.autograph.pyct import transformer
  from tensorflow.python.autograph.pyct.static_analysis import activity
  from tensorflow.python.autograph.pyct.static_analysis import reaching_definitions
  from tensorflow.python.platform import test
label_desc: Use image node_id 14 for calling the ReachingDefinitionsAnalyzerTest obj's underlying member method code with example usage: obj.test_replacement() and returns: a, a