lib/data_provider/container.rb
def add_scoped! container, _options = {}
      ### add container's providers ###
      container.providers.reverse.each do |definition|
        identifier = [definition[0]].flatten
        identifier = [_options[:scope]].flatten.compact + identifier if _options[:scope]
        add_provider(*([identifier]+definition[1..-1]))
      end

      ### add container's provides (simple providers) ###
      container.provides.each_pair do |key, value|
        provides(([_options[:scope]].flatten.compact + [key].flatten.compact) => value)
      end

      ### fallback provider ###
      @fallback_provider = container.fallback_provider.block if container.fallback_provider

      ### add container's data ###
      give!(container.data)
    end
def add_scoped! container, _options = {}
      ### add container's providers ###
      container.providers.reverse.each do |definition|
        identifier = [definition[0]].flatten
        identifier = [_options[:scope]].flatten.compact + identifier if _options[:scope]
        add_provider(*([identifier]+definition[1..-1]))
      end

      ### add container's provides (simple providers) ###
      container.provides.each_pair do |key, value|
        provides(([_options[:scope]].flatten.compact + [key].flatten.compact) => value)
      end

      ### fallback provider ###
      @fallback_provider = container.fallback_provider.block if container.fallback_provider

      ### add container's data ###
      give!(container.data)
    end
adds all the providers defined in the given module to this class,
 but turns their identifiers into array and prefixes the array with the :scope option