code: def test_composition(self, xp, dtype):
      @cupy.fuse()
      def f(x, y):
          return x - y * 2, x + y
  
      @cupy.fuse()
      def g(x, y, z):
          a, b = f(x + z, z - x * 3)
          c, d = f(x - y, y - z)
          return a + b * c - d
  
      @cupy.fuse()
      def h(x, y):
          a, b = f(x + y * 2, y * 3)
          return a - b * g(x - 2, x - 3, -y)
  
      x = testing.shaped_arange((3, 3), xp, dtype)
      y = testing.shaped_arange((3, 3), xp, dtype)
      return h(x, y)
  
imports: import threading
  import unittest
  from unittest import mock
  import pytest
  import cupy
  from cupy import testing
  from cupy_tests.core_tests.fusion_tests import fusion_utils
label_desc: Use image node_id 1 for calling the TestFusionComposition obj's underlying member method code with example usage: obj.test_composition(xp, dtype) and returns: h, unknown,  unknown, unknown, unknown