code: def nested_dtypes(
      subtype_strategy=scalar_dtypes(),  # type: st.SearchStrategy[np.dtype]
      max_leaves=10,  # type: int
      max_itemsize=None,  # type: int
  ):
      # type: (...) -> st.SearchStrategy[np.dtype]
      """Return the most-general dtype strategy.
  
      Elements drawn from this strategy may be simple (from the
      subtype_strategy), or several such values drawn from
      :func:`array_dtypes` with ``allow_subarrays=True``. Subdtypes in an
      array dtype may be nested to any depth, subject to the max_leaves
      argument.
      """
      return st.recursive(
          subtype_strategy,
          lambda x: array_dtypes(x, allow_subarrays=True),
          max_leaves,
      ).filter(
          lambda d: max_itemsize is None or d.itemsize <= max_itemsize
      )
  
imports: from __future__ import absolute_import, division, print_function
  import math
  import re
  from collections import namedtuple
  import numpy
  import hypothesis.internal.conjecture.utils
  import hypothesis.strategies._internal.core
  from hypothesis import Verbosity, assume
  from hypothesis._settings import note_deprecation
  from hypothesis.errors import InvalidArgument
  from hypothesis.internal.compat import PY2, hrange, integer_types, quiet_raise, string_types
  from hypothesis.internal.coverage import check_function
  from hypothesis.internal.reflection import proxies, reserved_means_kwonly_star
  from hypothesis.internal.validation import check_type, check_valid_interval
  from hypothesis.reporting import current_verbosity
  from hypothesis.strategies._internal import SearchStrategy
  from hypothesis.utils.conventions import UniqueIdentifier, not_set
label_desc: Use image node_id 21 for calling a global function with example usage: nested_dtypes(subtype_strategy, max_leaves, max_itemsize) and returns: st