     /// ARToppestControllerProvider implementation
     ///
     /// - returns: visibleViewController
-    override func toppestControllerFromCurrent() -> UIViewController? {
+    override open func toppestControllerFromCurrent() -> UIViewController? {
         return self.visibleViewController
     }
 }

    /// ARToppestControllerProvider implementation
    ///
    /// - returns: selectedViewController
    override func toppestControllerFromCurrent() -> UIViewController? {
        return self.selectedViewController ?? presentedViewController
    }
}

    }
}

public protocol ARToppestControllerProvider {
    func toppestControllerFromCurrent() -> UIViewController?
}
extension UIViewController : ARToppestControllerProvider {
    /// ARToppestControllerProvider implementation
    ///
    /// - returns: presentedViewController
    open func toppestControllerFromCurrent() -> UIViewController? {
        return self.presentedViewController
    }
}
