       fatalError("Can not set required property to nil.")
     }
     
-    let injected = Injected(required: required, tag: tag, didInject: didInject)
-    injected.value = value
-    return injected
+    return Injected(value: value, required: required, tag: tag, didInject: didInject)
   }
   
 }

      fatalError("Can not set required property to nil.")
    }

    let injected = InjectedWeak(required: required, tag: tag, didInject: didInject)
    injected._value = _value
    return injected
  }

}

      - didInject: block that will be called when concrete instance is injected in this property. 
                   Similar to `didSet` property observer. Default value does nothing.
  */
  public override convenience init(required: Bool = true, tag: DependencyTagConvertible? = nil, didInject: T -> () = { _ in }) {
    self.init(value: nil, required: required, tag: tag, didInject: didInject)
  }
  
  private init(value: T?, required: Bool = true, tag: DependencyTagConvertible? = nil, didInject: T -> ()) {
    self.value = value
    super.init(required: required, tag: tag, didInject: didInject)
  }
  
