code: def _verify_coo_components(
      indices=None, values=None, dense_shape=None
  ):
      ivy.utils.assertions.check_all_or_any_fn(
          indices,
          values,
          dense_shape,
          fn=ivy.exists,
          type="all",
          message="indices, values and dense_shape must all be specified",
      )
      # coordinates style (COO), must be shaped (x, y)
      ivy.utils.assertions.check_equal(
          len(ivy.shape(indices)),
          2,
          message="indices must be 2D",
          as_array=False,
      )
      ivy.utils.assertions.check_equal(
          len(ivy.shape(values)),
          1,
          message="values must be 1D",
          as_array=False,
      )
      ivy.utils.assertions.check_equal(
          len(ivy.to_ivy_shape(dense_shape)),
          ivy.shape(indices)[0],
          message="shape and indices shape do not match",
          as_array=False,
      )
      # number of values must match number of coordinates
      ivy.utils.assertions.check_equal(
          ivy.shape(values)[0],
          ivy.shape(indices)[1],
          message="values and indices do not match",
          as_array=False,
      )
      for i in range(ivy.shape(indices)[0]):
          ivy.utils.assertions.check_less(
              indices[i],
              ivy.to_ivy_shape(dense_shape)[i],
              message="indices is larger than shape",
          )
  
imports: import ivy
  from ivy.func_wrapper import inputs_to_native_arrays
  from ivy.utils.exceptions import handle_exceptions
label_desc: Use image node_id 1 for calling a global function with example usage: _verify_coo_components(indices, values, dense_shape) without return types