code: def add!(container)
        ### add container's providers ###
        # internally providers are added in reverse order (last one first)
        # so at runtime you it's easy and fast to grab the latest provider
        # so when adding now, we have to reverse the providers to get them in the original order
        container.providers.reverse.each do |definition|
          add_provider(*definition)
        end
  
        ### add container's provides (simple providers) ###
        self.provides(container.provides)
  
        ### fallback provider ###
        @fallback_provider = container.fallback_provider.block if container.fallback_provider
  
        ### add container's data ###
        give!(container.data)
      end
docs: "adding existing containers"-related methods
  
   adds all the providers defined in the given module to this class