 ///
 /// where `A` and `X` are protocols, `B` is a type conforming `A`, and `Y` is a type conforming `X` 
 /// and depending on `A`.
-public class Container {
+public final class Container {
     internal var services = [ServiceKey: ServiceEntryProtocol]()
     fileprivate let parent: Container? // Used by HierarchyObjectScope
     fileprivate var resolutionDepth = 0

    }
}

extension Container: _Resolver {}

// MARK: - Resolver
extension Container: Resolver {
    /// Retrieves the instance with the specified service type.

    public func synchronize() -> Resolver {
        return SynchronizedResolver(container: self)
    }
}

// MARK: - _Resolver
extension Container: _Resolver {
    // swiftlint:disable:next identifier_name
    public func _resolve<Service, Arguments>(
        name: String?,
