code: def unwrap_strategies(s):
      global unwrap_depth
  
      if not isinstance(s, SearchStrategy):
          return s
      try:
          return unwrap_cache[s]
      except KeyError:
          pass
  
      unwrap_cache[s] = s
  
      try:
          unwrap_depth += 1
          try:
              result = unwrap_strategies(s.wrapped_strategy)
              unwrap_cache[s] = result
              try:
                  assert (
                      result.force_has_reusable_values
                      == s.force_has_reusable_values
                  )
              except AttributeError:
                  pass
  
              try:
                  result.force_has_reusable_values = (
                      s.force_has_reusable_values
                  )
              except AttributeError:
                  pass
              return result
          except AttributeError:
              return s
      finally:
          unwrap_depth -= 1
          if unwrap_depth <= 0:
              unwrap_cache.clear()
          assert unwrap_depth >= 0
  
file_path: catboost/contrib/python/hypothesis/py3/hypothesis/strategies/_internal/lazy.py
imports: from inspect import signature
  from typing import MutableMapping
  from weakref import WeakKeyDictionary
  from hypothesis.internal.reflection import convert_keyword_arguments, convert_positional_arguments, get_pretty_function_description, repr_call
  from hypothesis.strategies._internal.strategies import SearchStrategy
label_desc: Use image node_id 1 for calling a global function with example usage: unwrap_strategies(s) and returns: s, unwrap_cache, result, s