code: def test_multi_out_perform(self):
      from pytensor.graph.basic import Apply
      from pytensor.scalar.basic import ScalarOp
  
      class MultiOutOp(ScalarOp):
          def make_node(self, x):
              return Apply(self, [x], [x.type(), x.type()])
  
          def perform(self, node, inputs, outputs):
              outputs[1][0] = outputs[0][0] = inputs[0]
  
          def c_code(self, *args):
              return "dummy"
  
      x = float32("x")
      comp_op = Composite([x], MultiOutOp()(x))
  
      y, z = comp_op(x)
  
      fn = pytensor.function([x], [y, z], mode=Mode("py", None))
  
      assert fn(1.0) == [1.0, 1.0]
  
imports: import numpy
  import pytest
  import pytensor
  import pytensor.tensor
  import tests.unittest_tools
  from pytensor.compile.mode import Mode
  from pytensor.graph.fg import FunctionGraph
  from pytensor.link.c.basic import DualLinker
  from pytensor.scalar.basic import ComplexError, Composite, InRange, ScalarType, add, and_, arccos, arccosh, arcsin, arcsinh, arctan, arctan2, arctanh, cast, complex64, constant, cos, cosh, deg2rad, eq, exp, exp2, expm1, float16, float32, floats, int8, int32, ints, invert, log, log1p, log2, log10, mean, mul, neq, rad2deg, reciprocal, sin, sinh, sqrt, switch, tan, tanh, true_div, uint8
  from pytensor.tensor.type import fscalar, imatrix, iscalar, matrix
  from tests.link.test_link import make_function
label_desc: Use image node_id 9 for calling the TestComposite obj's underlying member method code with example usage: obj.test_multi_out_perform() and returns: Apply, str