code: def _prepare_indices(self, i, j):
      M, N = self._swap(*self.shape)
  
      def check_bounds(indices, bound):
          idx = indices.max()
          if idx >= bound:
              raise IndexError(
                  "index (%d) out of range (>= %d)" % (idx, bound)
              )
          idx = indices.min()
          if idx < -bound:
              raise IndexError(
                  "index (%d) out of range (< -%d)" % (idx, bound)
              )
  
      i = cupy.array(
          i, dtype=self.indptr.dtype, copy=True, ndmin=1
      ).ravel()
      j = cupy.array(
          j, dtype=self.indices.dtype, copy=True, ndmin=1
      ).ravel()
      check_bounds(i, M)
      check_bounds(j, N)
      return i, j, M, N
  
imports: import string
  import warnings
  import numpy
  import cupy
  import cupyx
  from cupy import _core
  from cupy._core import _scalar
  from cupy._creation import basic
  from cupyx.scipy.sparse import _base
  from cupyx.scipy.sparse import _coo
  from cupyx.scipy.sparse import _data
  from cupyx.scipy.sparse import _sputils
  from cupyx.scipy.sparse import _util
  from cupyx.scipy.sparse import _index
label_desc: Use image node_id 22 for calling the _compressed_sparse_matrix obj's underlying member method code with example usage: obj._prepare_indices(i, j) and returns: i,  j,  M,  N