     
     // MARK: - UIResponder
     
-    public override var canBecomeFirstResponder: Bool {
+    open override var canBecomeFirstResponder: Bool {
         return true
     }
     
-    public override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
+    open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
         let textViewIsEditing = currentTextAnnotationView?.textView.isFirstResponder ?? false
         return action == #selector(EditImageViewController.deleteSelectedAnnotationView) && !textViewIsEditing
     }
     
     // MARK: - UIViewController
     
-    public override func viewDidLoad() {
+    open override func viewDidLoad() {
         super.viewDidLoad()
         
         assert(imageView.image != nil, "A screenshot must be set using `setScreenshot(_:)` before loading the view.")

        }
    }
    
    public override var prefersStatusBarHidden: Bool {
        return true
    }
    
    public override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        setNeedsStatusBarAppearanceUpdate()
    }
    
    public override var shouldAutorotate: Bool {
        return false
    }
    
    public override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return imageIsLandscape() ? .landscape : [.portrait, .portraitUpsideDown]
    }
    
    public override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
        var landscapeOrientation = UIInterfaceOrientation.landscapeRight
        var portraitOrientation = UIInterfaceOrientation.portrait
        

import CoreImage

/// The default view controller responsible for editing an image.
open class EditImageViewController: UIViewController, UIGestureRecognizerDelegate {
    private static let TextViewEditingBarAnimationDuration = 0.25
    
    // MARK: - Editor
