code: def do_draw(self, data):
      # We don't usually have a gufunc signature; do the common case first & fast.
      if self.signature is None:
          return self._draw_loop_dimensions(data)
  
      # When we *do*, draw the core dims, then draw loop dims, and finally combine.
      core_in, core_res = self._draw_core_dimensions(data)
  
      # If some core shape has omitted optional dimensions, it's an error to add
      # loop dimensions to it.  We never omit core dims if min_dims >= 1.
      # This ensures that we respect Numpy's gufunc broadcasting semantics and user
      # constraints without needing to check whether the loop dims will be
      # interpreted as an invalid substitute for the omitted core dims.
      # We may implement this check later!
      use = [None not in shp for shp in core_in]
      loop_in, loop_res = self._draw_loop_dimensions(data, use=use)
  
      def add_shape(loop, core):
          return tuple(x for x in (loop + core)[-32:] if x is not None)
  
      return BroadcastableShapes(
          input_shapes=tuple(
              add_shape(l, c) for l, c in zip(loop_in, core_in)
          ),
          result_shape=add_shape(loop_res, core_res),
      )
  
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 2 for calling the MutuallyBroadcastableShapesStrategy obj's underlying member method code with example usage: obj.do_draw(data) and returns: BroadcastableShapes, self, tuple