class_docstr: Abstract base class that stores data as well as any extra metadata.
  
  This allows for subclassing `torch.Tensor` and `np.ndarray` through multiple inheritance.
  
  Metadata is stored in the form of a dictionary.
  
  Behavior should be the same as extended class (e.g., `torch.Tensor` or `np.ndarray`)
  aside from the extended meta functionality.
  
  Copying of information:
  
      * For `c = a + b`, then auxiliary data (e.g., metadata) will be copied from the
        first instance of `MetaObj` if `a.is_batch` is False
        (For batched data, the metadata will be shallow copied for efficiency purposes).
docstr: returns a copy of the data. list and dict are shallow copied for efficiency purposes.
docstr_tok: ["returns","a","copy","of","the","data",".","list","and","dict","are","shallow","copied","for","efficiency","purposes","."]
code: def copy_items(data):
      """returns a copy of the data. list and dict are shallow copied for efficiency purposes."""
      if is_immutable(data):
          return data
      if isinstance(data, (list, dict, np.ndarray)):
          return data.copy()
      if isinstance(data, torch.Tensor):
          return data.detach().clone()
      return deepcopy(data)
  
imports: from __future__ import annotations
  import itertools
  import pprint
  from copy import deepcopy
  from typing import Any, Iterable
  import numpy
  import torch
  from monai.utils import TraceKeys, first, is_immutable
label_desc: Use image node_id 3 for calling the MetaObj obj's underlying member method code with example usage: obj.copy_items(data) and returns: deepcopy, data, data, data