code: def test_param_mutable(self):
      a = dvector()
      a_out = (
          a * 2
      )  # assuming the op which makes this "in place" triggers
  
      # using mutable=True will let fip change the value in aval
      fip = pfunc([In(a, mutable=True)], [a_out], mode="FAST_RUN")
      aval = np.random.random(10)
      aval2 = aval.copy()
      assert np.all(fip(aval) == (aval2 * 2))
      assert not np.all(aval == aval2)
  
      # using mutable=False should leave the input untouched
      f = pfunc([In(a, mutable=False)], [a_out], mode="FAST_RUN")
      aval = np.random.random(10)
      aval2 = aval.copy()
      assert np.all(f(aval) == (aval2 * 2))
      assert np.all(aval == aval2)
  
imports: import numpy
  import pytest
  import pytensor.tensor
  from pytensor.compile import UnusedInputError, get_mode
  from pytensor.compile.function import function, pfunc
  from pytensor.compile.function.pfunc import rebuild_collect_shared
  from pytensor.compile.io import In
  from pytensor.compile.sharedvalue import shared
  from pytensor.configdefaults import config
  from pytensor.graph.utils import MissingInputError
  from pytensor.misc.safe_asarray import _asarray
  from pytensor.tensor.math import sum
  from pytensor.tensor.type import bscalar, bvector, dmatrices, dmatrix, dscalar, dvector, fscalar, fvector, imatrix, iscalar, ivector, ivectors, lscalar, wvector
  from pytensor.utils import PYTHON_INT_BITWIDTH
label_desc: Use image node_id 8 for calling the TestPfunc obj's underlying member method code with example usage: obj.test_param_mutable() without return types