code: def test_ifft2_plan_manager(self, xp, scp, dtype):
      x = testing.shaped_random(self.shape, xp, dtype)
      # hack: avoid testing the cases when getting a cuFFT plan is impossible
      if _default_fft_func(x, s=self.s, axes=self.axes) is not _fftn:
          return x
      if scp is cupyx.scipy:
          from cupy.cuda.cufft import get_current_plan
  
          plan = scp.fftpack.get_fft_plan(
              x, shape=self.s, axes=self.axes
          )
          with plan:
              assert id(plan) == id(get_current_plan())
              out = scp.fftpack.ifft2(x, shape=self.s, axes=self.axes)
          assert get_current_plan() is None
      else:  # scipy
          out = scp.fftpack.ifft2(x, shape=self.s, axes=self.axes)
      return out
  
imports: import unittest
  import numpy
  import pytest
  import cupy
  from cupy import testing
  import cupyx.scipy.fftpack
  from cupy.fft._fft import _default_fft_func, _fftn
label_desc: Use image node_id 10 for calling the TestFft2 obj's underlying member method code with example usage: obj.test_ifft2_plan_manager(xp, scp, dtype) and returns: out, x