code: def test_complex_outputs(self):
      class TestClass(object):
          def __init__(self, a, b):
              self.a = a
              self.b = b
  
      def f(n, obj):
          obj.a = 0
          obj.b = 0
          if n > 0:
              obj.a = -n
          else:
              obj.b = 2 * n
          return obj
  
      tr = self.transform(f, control_flow)
  
      res_obj = tr(custom_constant(1), TestClass(0, 0))
      self.assertValuesEqual((res_obj.a, res_obj.b), (-1, 0))
      res_obj = tr(custom_constant(-1), TestClass(0, 0))
      self.assertValuesEqual((res_obj.a, res_obj.b), (0, -2))
  
imports: import collections
  from nvidia.dali._autograph.converters import break_statements
  from nvidia.dali._autograph.converters import continue_statements
  from nvidia.dali._autograph.converters import control_flow
  from nvidia.dali._autograph.core import converter_testing
  from nvidia.dali._autograph.utils.all_utils import custom_constant
label_desc: Use image node_id 2 for calling the IfStatementTest obj's underlying member method code with example usage: obj.test_complex_outputs() and returns: obj