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

    
    // MARK: - UIResponder
    
    public override var canBecomeFirstResponder: Bool {
        return true
    }
    
    public 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() {
        super.viewDidLoad()
        
        assert(imageView.image != nil, "A screenshot must be set using `setScreenshot(_:)` before loading the view.")

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