     /// - parameter animated: Whether animates view controller transition or not. `true` by default.
     ///
     /// - returns: The pushed view controller. Returns `nil` if failed to push a view controller.
+    @discardableResult
     public func push(_ viewController: UIViewController,
                      from: UINavigationController? = nil,
                      animated: Bool = true) -> UIViewController? {

    /// - parameter url: The URL to find `URLOpenHandler`s.
    ///
    /// - returns: The return value of the matching `URLOpenHandler`. Returns `false` if there's no match.
    public func open(_ url: URLConvertible) -> Bool {
        let urlOpenHandlersKeys = Array(self.urlOpenHandlers.keys)
        if let urlMatchComponents = URLMatcher.default.match(url, scheme: self.scheme, from: urlOpenHandlersKeys) {

    ///
    /// - returns: The pushed view controller. Returns `nil` if there's no matching view controller or failed to push
    ///            a view controller.
    @discardableResult
    public func push(_ url: URLConvertible,
                     from: UINavigationController? = nil,
                     animated: Bool = true) -> UIViewController? {
