human
What is a the Python program you requested given the following:
Complete the below
@contextmanager
def use_step_import_modules(step_container):

    ''''Redirect any step/type registration to the runner\'s step-context object
    during step imports by using fake modules (instead of using module-globals).
    This allows that multiple runners can be used without polluting the
    global variables in problematic modules
    (:mod:`behave.step_registry`, mod:`behave.matchers`).
    .. sourcecode:: python
    # -- RUNNER-IMPLEMENTATION:
    def load_step_definitions(self, ...):
    step_container = self.step_container
    with use_step_import_modules(step_container) as import_context:
    # -- USE: Fake modules during step imports
    import_context.reset_current_matcher()
    :param step_container:  Step context object with step_registry, matcher_factory.'
    '''
assistant
#Here is the Python program you requested.
    orig_modules = {}
    import_context = StepImportModuleContext(step_container)
    with _step_import_lock:
        try:
            for (module_name, fake_module) in six.iteritems(import_context.modules):
                orig_module = sys.modules.get(module_name, unknown)
                orig_modules[module_name] = orig_module
                sys.modules[module_name] = fake_module
            (yield import_context)
        finally:
            for (module_name, orig_module) in six.iteritems(orig_modules):
                if (orig_module is unknown):
                    del sys.modules[module_name]
                else:
                    sys.modules[module_name] = orig_module