text: Title: [QUESTION] How to decorate a provider?
  Body: dependency-injector is great!
  
  Using the Decorator pattern, `Foo` decorates `Bar`.
  Goal is that `foo_factory` will return `Bar` instances which use `Foo` instances.
  
  How can this be achieved?
  
  Really appreciate any help ...
  
  Example (read the comments):
  ```python
  from dependency_injector import providers
  
  
  # This is just a service.
  class Foo:
      def __init__(self, dep1, dep2, dep3) -> None:
          self.dep1 = dep1
          self.dep1 = dep2
          self.dep1 = dep3
  
      def do_something(self):
          print('foo ')
  
  
  # This is a service which decorates Foo (decorator pattern).
  class Bar:
      def __init__(self, foo: Foo) -> None:
          self.foo = foo
  
      def do_something(self):
          self.foo.do_something()
          print('bar ')
  
  
  # Foo has a factory to pass in dependencies.
  foo_factory = providers.Factory(Foo, dep1=1, dep2=2, dep3=3)
  
  # Case_1 : Pass foo_factory in order to instantiate as late as possible.
  bar_factory = providers.Factory(Bar, foo=foo_factory)
  # Case_2 : Pass foo_factory instance.
  # bar_factory = providers.Factory(Bar, foo=foo_factory())
  
  # override the factory
  foo_factory.override(bar_factory)
  
  # Triggers recursion error in Case_1
  bar_1 = foo_factory()
  bar_2 = foo_factory()
  
  # Goal_1: foo bar
  bar_1.do_something()
  
  # Goal_2: Have different foo objects. Achieved only with Case_1.
  assert bar_1.foo != bar_2.foo
  ```
  
  Error sample:
  ```
    File "src/dependency_injector/providers.pxd", line 445, in dependency_injector.providers.__provide_keyword_args
    File "src/dependency_injector/providers.pxd", line 365, in dependency_injector.providers.__get_value
    File "src/dependency_injector/providers.pyx", line 223, in dependency_injector.providers.Provider.__call__
    File "src/dependency_injector/providers.pyx", line 225, in dependency_injector.providers.Provider.__call__
    File "src/dependency_injector/providers.pyx", line 2689, in dependency_injector.providers.Factory._provide
    File "src/dependency_injector/providers.pxd", line 650, in dependency_injector.providers.__factory_call
    File "src/dependency_injector/providers.pxd", line 577, in dependency_injector.providers.__call
    File "src/dependency_injector/providers.pxd", line 445, in dependency_injector.providers.__provide_keyword_args
    File "src/dependency_injector/providers.pxd", line 365, in dependency_injector.providers.__get_value
    File "src/dependency_injector/providers.pyx", line 223, in dependency_injector.providers.Provider.__call__
  RecursionError: maximum recursion depth exceeded while calling a Python object
  ```