 
         let formatters: [AttributeFormatter] = [
             BlockquoteFormatter(),
+            PreFormatter(),
             TextListFormatter(style: .ordered),
             TextListFormatter(style: .unordered)
         ]

    ///
    ///     A. The selected location is at the very end of the document
    ///     B. The previous character is a '\n'
    ///     C. There's a list (OR) blockquote.
    ///
    /// This is necessary because when the caret is at EOF, and the previous `\n` character has
    /// a [List, Blockquote] styles, that style will remain in the `typingAttributes`.  We'll only 
    /// allow the style to remain if there are contents in the current line with the textList style
    /// (in which case this condition won't ever trigger because we'll either no longer be at EOF, 
    /// or the previous character won't be `\n`).

    // MARK: - Overwritten Properties
    
    /// Overwrites Typing Attributes:
    /// This is the (only) valid hook we've found, in order to (selectively) remove the [Blockquote, List, Pre] attributes.
    /// For details, see: https://github.com/wordpress-mobile/AztecEditor-iOS/issues/414
    ///
    override open var typingAttributes: [String: Any] {
        get {
            let updatedAttributes = ensureRemovalOfParagraphAttributes(from: super.typingAttributes)
            super.typingAttributes = updatedAttributes

            return updatedAttributes
