code: def _get_castable_dtypes_values(draw, *, allow_nan=False):
      available_dtypes = helpers.get_dtypes("numeric")
      shape = draw(
          helpers.get_shape(
              min_num_dims=1, max_num_dims=4, max_dim_size=6
          )
      )
      dtype, values = draw(
          helpers.dtype_and_values(
              available_dtypes=available_dtypes,
              num_arrays=1,
              large_abs_safety_factor=24,
              small_abs_safety_factor=24,
              safety_factor_scale="log",
              shape=shape,
              allow_nan=allow_nan,
          )
      )
      axis = draw(helpers.get_axis(shape=shape, force_int=True))
      dtype1, values, dtype2 = draw(
          helpers.get_castable_dtype(
              draw(helpers.get_dtypes("float")), dtype[0], values[0]
          )
      )
      return [dtype1], [values], axis, dtype2
  
imports: from hypothesis import strategies
  import ivy
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import handle_test
label_desc: Use image node_id 2 for calling a global function with example usage: _get_castable_dtypes_values(draw) and returns: list,  list,  axis,  dtype2