code: def test_in_mutable(self):
      a = dvector()
      a_out = (
          a * 2
      )  # assuming the op which makes this "in place" triggers
  
      # using mutable=True will let f change the value in aval
      f = function([In(a, mutable=True)], a_out, mode="FAST_RUN")
      aval = np.random.random((10,))
      aval2 = aval.copy()
      assert np.array_equal(f(aval), (aval2 * 2))
      assert not np.array_equal(aval, aval2)
  
      # using mutable=False should leave the input untouched
      f = function([In(a, mutable=False)], a_out, mode="FAST_RUN")
      aval = np.random.random((10,))
      aval2 = aval.copy()
      assert np.array_equal(f(aval), (aval2 * 2))
      assert np.array_equal(aval, aval2)
  
imports: import os
  import pickle
  import re
  import shutil
  import tempfile
  import numpy
  import pytest
  from pytensor.compile import shared
  from pytensor.compile.function import function, function_dump
  from pytensor.compile.io import In
  from pytensor.configdefaults import config
  from pytensor.tensor.type import bscalar, bvector, dscalar, dvector, fscalar, fvector, vector, wvector
label_desc: Use image node_id 4 for calling the TestFunctionIn obj's underlying member method code with example usage: obj.test_in_mutable() without return types