code: def _new(cls, iterable, shape, **kwargs):
      shape, flat_list = cls._handle_ndarray_creation_inputs(
          iterable, shape, **kwargs
      )
      shape = Tuple(*map(_sympify, shape))
      cls._check_special_bounds(flat_list, shape)
      flat_list = flatten(flat_list)
      flat_list = Tuple(*flat_list)
      self = Basic.__new__(cls, flat_list, shape, **kwargs)
      self._shape = shape
      self._array = list(flat_list)
      self._rank = len(shape)
      self._loop_size = functools.reduce(lambda x, y: x * y, shape, 1)
      return self
  
imports: import functools
  from typing import List
  from sympy.core.basic import Basic
  from sympy.core.containers import Tuple
  from sympy.core.singleton import S
  from sympy.core.sympify import _sympify
  from sympy.tensor.array.mutable_ndim_array import MutableNDimArray
  from sympy.tensor.array.ndim_array import NDimArray, ImmutableNDimArray, ArrayKind
  from sympy.utilities.iterables import flatten
label_desc: Use image node_id 2 for calling the ImmutableDenseNDimArray obj's underlying member method code with example usage: obj._new(cls, iterable, shape) and returns: self