code: def test_cyclic_reference(self):
      def _foo(bar):
          del bar  # unused
  
      def _bar(foo):
          del foo  # unused
  
      foo_node = lp_courier.CourierNode(_foo)
      foo_handle = foo_node.create_handle()
      bar_node = lp_courier.CourierNode(_bar)
      bar_handle = bar_node.create_handle()
  
      self.assertNotIn(foo_handle, bar_node._input_handles)
      self.assertNotIn(bar_handle, foo_node._input_handles)
      foo_node.configure(bar=bar_handle)
      bar_node.configure(foo=foo_handle)
      self.assertIn(foo_handle, bar_node._input_handles)
      self.assertIn(bar_handle, foo_node._input_handles)
  
imports: import datetime
  import sys
  import threading
  import time
  from unittest import mock
  from absl.testing import absltest
  import courier
  from launchpad.launch.test_multi_threading import address_builder
  from launchpad.nodes.courier import node
label_desc: Use image node_id 3 for calling the CourierNodeTest obj's underlying member method code with example usage: obj.test_cyclic_reference() without return types