code: def lists(
      draw,
      *,
      x,
      min_size=None,
      max_size=None,
      size_bounds=None,
  ):
      """Draws a list with a random bounded size from the data-set x.
  
      Parameters
      ----------
      draw
          special function that draws data randomly (but is reproducible) from a given
          data-set (ex. list).
      x
          data-set of elements.
      min_size
          minimum size of the list.
      max_size
          max size of the list.
      size_bounds
          if min_size or max_size is None, draw them randomly from the range
          [size_bounds[0], size_bounds[1]].
  
      Returns
      -------
      ret
          A strategy that draws a list.
  
      Examples
      --------
      >>> lists(
      ...     x=st.sampled_from([-1, 5, 9]),
      ...     min_size=4,
      ...     max_size=5,
      ... )
      [5, 5, 5, 9, 9]
  
      >>> lists(
      ...     x=st.sampled_from([-1, 5, 9]),
      ...     min_size=4,
      ...     max_size=5,
      ... )
      [5, 9, -1, -1]
  
      >>> lists(
      ...     x=st.sampled_from([-1, 5, 9]),
      ...     min_size=4,
      ...     max_size=5,
      ... )
      [5, 9, 5, 9]
  
      >>> lists(
      ...     x=st.integers(min_value=0, max_value=4),
      ...     size_bounds=(9, 10),
      ... )
      [0, 2, 4, 3, 3, 3, 3, 2, 1, 4]
  
      >>> lists(
      ...     x=st.integers(min_value=0, max_value=4),
      ...     size_bounds=(9, 10),
      ... )
      [1, 0, 1, 2, 1, 4, 1, 3, 1]
  
      >>> lists(
      ...     x=st.integers(min_value=0, max_value=4),
      ...     size_bounds=(9, 10),
      ... )
      [1, 0, 1, 2, 1, 4, 1, 3, 1]
  
      >>> lists(
      ...     x=st.integers(min_value=0, max_value=4),
      ...     size_bounds=[9, 10],
      ... )
      [1, 3, 0, 2, 0, 0, 1, 4, 2, 3]
  
      >>> lists(
      ...     x=st.integers(min_value=0, max_value=4),
      ...     size_bounds=[9, 10],
      ... )
      [0, 0, 0, 0, 0, 0, 0, 0, 0]
  
      >>> lists(
      ...     x=st.integers(min_value=0, max_value=4),
      ...     size_bounds=[9, 10],
      ... )
      [1, 2, 4, 1, 1, 1, 4, 3, 2]
  
      >>> lists(
      ...     x=st.floats(
      ...         min_value=1,
      ...         max_value=3,
      ...         exclude_max=True,
      ...     ),
      ...     min_size=5,
      ...     max_size=5,
      ... )
      [1.1, 1.0, 1.0, 1.0, 1.0]
  
      >>> lists(
      ...     x=st.floats(
      ...         min_value=1,
      ...         max_value=3,
      ...         exclude_max=True,
      ...     ),
      ...     min_size=5,
      ...     max_size=5,
      ... )
      [2.00001, 2.00001, 1.0, 2.999999999999999, 1.9394938006792373]
  
      >>> lists(
      ...     x=st.floats(
      ...         min_value=1,
      ...         max_value=3,
      ...         exclude_max=True,
      ...     ),
      ...     min_size=5,
      ...     max_size=5,
      ... )
      [1.0, 2.00001, 1.0, 2.999999999999999, 1.9394938006792373]
      """
      if not isinstance(min_size, int) or not isinstance(max_size, int):
          integers = (
              number_helpers.ints(
                  min_value=size_bounds[0], max_value=size_bounds[1]
              )
              if size_bounds
              else number_helpers.ints()
          )
      if not isinstance(min_size, int):
          min_size = draw(st.shared(integers, key=min_size))
      if not isinstance(max_size, int):
          max_size = draw(st.shared(integers, key=max_size))
  
      return draw(st.lists(x, min_size=min_size, max_size=max_size))
  
imports: import numpy
  import hypothesis.extra.numpy
  from hypothesis import strategies
  from hypothesis.internal.floats import float_of
  from functools import reduce
  from operator import mul
  import sys
  import string
  import ml_dtypes
  import ivy_tests.test_ivy.helpers.globals
  from ..pipeline_helper import WithBackendContext
  import ivy_tests.test_ivy.helpers
  from ivy_tests.test_ivy.helpers.hypothesis_helpers.dtype_helpers import get_dtypes
  from .None import general_helpers
  from .None import dtype_helpers, number_helpers
  from ..globals import mod_backend
label_desc: Use image node_id 3 for calling a global function with example usage: lists(draw) and returns: draw