code: def _generate_multi_dot_dtype_and_arrays(draw):
      input_dtype = [
          draw(st.sampled_from(draw(helpers.get_dtypes("numeric"))))
      ]
      matrices_dims = draw(
          st.lists(
              st.integers(min_value=2, max_value=10),
              min_size=4,
              max_size=4,
          )
      )
      shape_1 = (matrices_dims[0], matrices_dims[1])
      shape_2 = (matrices_dims[1], matrices_dims[2])
      shape_3 = (matrices_dims[2], matrices_dims[3])
  
      matrix_1 = draw(
          helpers.dtype_and_values(
              shape=shape_1,
              dtype=input_dtype,
              min_value=-10,
              max_value=10,
          )
      )
      matrix_2 = draw(
          helpers.dtype_and_values(
              shape=shape_2,
              dtype=input_dtype,
              min_value=-10,
              max_value=10,
          )
      )
      matrix_3 = draw(
          helpers.dtype_and_values(
              shape=shape_3,
              dtype=input_dtype,
              min_value=-10,
              max_value=10,
          )
      )
  
      return input_dtype, [
          matrix_1[1][0],
          matrix_2[1][0],
          matrix_3[1][0],
      ]
  
imports: import math
  from hypothesis import strategies
  from hypothesis import assume
  import numpy
  import pytest
  import itertools
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers import handle_test, BackendHandler
  import ivy
label_desc: Use image node_id 6 for calling a global function with example usage: _generate_multi_dot_dtype_and_arrays(draw) and returns: input_dtype,  list