     /// An optional completion callback.
     internal var completionCallback: ((Bool) -> Void)?
     
-    /// A boolean indicating if the transition has finished.
-    internal var isFinishing = true
-    
     /// An Array of MotionPreprocessors used during a transition.
     internal lazy var preprocessors = [MotionPreprocessor]()
     

        return toViewController?.view
    }
    
    /// An Array of observers that are updated during a transition.
    internal var transitionObservers: [MotionTargetStateObserver]?
    
    /// Max duration used by MotionAnimators and MotionPlugins.
    public internal(set) var totalDuration: TimeInterval = 0
    
    /**
     A UIViewControllerContextTransitioning object provided by UIKit, which
     might be nil when isTransitioning. This happens when calling motionReplaceViewController
     */
    internal weak var transitionContext: UIViewControllerContextTransitioning?
    
    /// A reference to the MotionContext.
    public internal(set) var context: MotionContext!
    
    /// A reference to a fullscreen snapshot.
    internal var fullScreenSnapshot: UIView?
    
    /// Progress of the current transition. 0 if no transition is happening.
    public internal(set) var progress: TimeInterval = 0 {

        return isNavigationController || isTabBarController
    }
    
    /// Indicates whether the to view controller is full screen.
    internal var toOverFullScreen: Bool {
        return !isContainerController && (toViewController?.modalPresentationStyle == .overFullScreen || toViewController?.modalPresentationStyle == .overCurrentContext)
    }
    
    /// Indicates whether the from view controller is full screen.
    internal var fromOverFullScreen: Bool {
        return !isContainerController && (fromViewController?.modalPresentationStyle == .overFullScreen || fromViewController?.modalPresentationStyle == .overCurrentContext)
    }
    
    /// An initializer.
