code: def test_traversal(self):
      net = core.Net("test")
      net.FC(["X", "W"], ["Y"])
      net.Relu(["Y"], ["Z"])
      nn = ng.NNModule(net)
      fc = nn.controlFlow[0]
      relu = nn.controlFlow[1]
      assert not fc.inputs[0].hasProducer()
      assert fc.inputs[0].name == "X"
      assert fc.inputs[1].name == "W"
      assert relu.outputs[0].name == "Z"
      assert relu.inputs[0].name == "Y"
      assert relu.inputs[0].hasProducer()
      assert relu.inputs[0].producer.name == "FC"
      assert fc.outputs[0].consumers[0].name == "Relu"
  
imports: from caffe2.python import core, test_util
  from caffe2.proto import caffe2_pb2
  import caffe2.python.nomnigraph
  from hypothesis import given
  import hypothesis.strategies
  import random
label_desc: Use image node_id 10 for calling the TestBindings obj's underlying member method code with example usage: obj.test_traversal() without return types