code: def do_draw(self, data):
      @proxies(self.like)
      def inner(*args, **kwargs):
          if data.frozen:
              raise InvalidState(
                  f"This generated {nicerepr(self.like)} function can only "
                  "be called within the scope of the @given that created it."
              )
          if self.pure:
              args, kwargs = convert_positional_arguments(
                  self.like, args, kwargs
              )
              key = (args, frozenset(kwargs.items()))
              cache = self._cache.setdefault(inner, {})
              if key not in cache:
                  cache[key] = data.draw(self.returns)
                  rep = repr_call(
                      self.like, args, kwargs, reorder=False
                  )
                  note(f"Called function: {rep} -> {cache[key]!r}")
              return cache[key]
          else:
              val = data.draw(self.returns)
              rep = repr_call(self.like, args, kwargs, reorder=False)
              note(f"Called function: {rep} -> {val!r}")
              return val
  
      return inner
  
file_path: catboost/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/functions.py
imports: from weakref import WeakKeyDictionary
  from hypothesis.control import note
  from hypothesis.errors import InvalidState
  from hypothesis.internal.reflection import convert_positional_arguments, nicerepr, proxies, repr_call
  from hypothesis.strategies._internal.strategies import SearchStrategy
label_desc: Use image node_id 3 for calling the FunctionStrategy obj's underlying member method code with example usage: obj.do_draw(data) and returns: inner, cache, val