 
     private func removeToken(token: ContextToken) {
         self.contextTokens = Set(self.contextTokens.filter({ $0.referent != token }))
-    }
-
-    private func setupContextAwareIfNecessary(obj: Any?) {
-        guard let contextAware = obj as? ContextAware where contextAware.contextToken == nil else {
-            return
-        }
-
-        let contextToken = self.generateTokenForContextAware(contextAware)
-        contextToken.contextAware = contextAware
-        contextAware.contextToken = contextToken
-        contextAware.contextAvailable()
     }
 
     // MARK: Services

    }
}

extension UIView {

    func inflateAddAndConstrainIfPossible() {
        guard let inflatable = self as? UINibViewInflatable else { return }
        let view = inflatable.inflateView()
        self.addAndConstrainView(view)


public extension ContextAware {

    public var context: Context {
        return self.contextToken!.context
    }

    public func contextWrap<Object>(obj: Object) -> Object {
        return self.context.wrap(obj)
    }

    public func newViewController<ViewController: UIViewController>() -> ViewController {
        return self.context.newViewController()
    }

    public func newView<View: UIView>() -> View {
        return self.context.newView()
    }
}

