code: def __call__(self, *args, **kwargs):
      dsks = [arg for arg in args if hasattr(arg, "_elemwise")]
      if len(dsks) > 0:
          for dsk in dsks:
              result = dsk._elemwise(self._ufunc, *args, **kwargs)
              if type(result) != type(NotImplemented):
                  return result
          raise TypeError(
              "Parameters of such types are not supported by "
              + self.__name__
          )
      else:
          return self._ufunc(*args, **kwargs)
  
imports: from __future__ import annotations
  from functools import partial
  from operator import getitem
  import numpy
  from dask import core
  from dask.array.core import Array, apply_infer_dtype, asarray, blockwise, elemwise
  from dask.base import is_dask_collection, normalize_function
  from dask.highlevelgraph import HighLevelGraph
  from dask.utils import derived_from, funcname
label_desc: Use image node_id 5 for calling the ufunc obj's underlying member method code with example usage: obj.__call__() and returns: self, result