code: def do_draw(self, data):
      count = 0
      while True:
          try:
              with self.limited_base.capped(self.max_leaves):
                  return data.draw(self.strategy)
          except LimitReached:
              # Workaround for possible coverage bug - this branch is definitely
              # covered but for some reason is showing up as not covered.
              if count == 0:  # pragma: no branch
                  data.note_event(
                      lazyformat(
                          "Draw for %r exceeded max_leaves and had to be retried",
                          self,
                      )
                  )
              count += 1
  
imports: from __future__ import absolute_import, division, print_function
  from contextlib import contextmanager
  from hypothesis.errors import InvalidArgument
  from hypothesis.internal.lazyformat import lazyformat
  from hypothesis.internal.reflection import get_pretty_function_description
  from hypothesis.strategies._internal.strategies import OneOfStrategy, SearchStrategy
label_desc: Use image node_id 4 for calling the RecursiveStrategy obj's underlying member method code with example usage: obj.do_draw(data) and returns: data