def register(key, object = nil)
      assert_register_args_valid(object, block_given?)
      @container.register(key) do |*args|
        object = yield(*args) if block_given?
        injectable?(object) ? inject(object) : object
      end
      self
    end
def register(key, object = nil)
      assert_register_args_valid(object, block_given?)
      @container.register(key) do |*args|
        object = yield(*args) if block_given?
        injectable?(object) ? inject(object) : object
      end
      self
    end
Registers a new dependency with the given key.
 You can specify either an object or a factory block
 that creates an object.

 @param key [Object] Typically a class or a symbol.
 @param object [Object]
 @yield passed arguments when loading
 @return [Dio::Injector] self