     /// - Returns: True if the attribute exists at the specified index.
     ///
     open func formattingAtIndexContainsItalic(_ index: Int) -> Bool {
-        return storage.fontTrait(.traitItalic, existsAtIndex: index)
+        let formatter = ItalicFormatter()
+        return formatter.present(in: storage, at: index)
     }
 
 

    /// Checks if the next character that the user types will be formatted as Blockquote, or not.
    ///
    open func typingAttributesContainsBlockquote() -> Bool {
        let paragraphStyle = typingAttributes[NSParagraphStyleAttributeName] as? ParagraphStyle
        return paragraphStyle?.blockquote != nil
    }


    /// Checks if the next character that the user types will be formatted as an Ordered List, or not.
    ///
    open func typingAttributesContainsOrderedList() -> Bool {
        let paragraphStyle = typingAttributes[NSParagraphStyleAttributeName] as? ParagraphStyle
        return paragraphStyle?.textList?.style == .ordered
    }


    /// Checks if the next character that the user types will be formatted as an Unordered List, or not.
    ///
    open func typingAttributesContainsUnorderedList() -> Bool {
        let paragraphStyle = typingAttributes[NSParagraphStyleAttributeName] as? ParagraphStyle
        return paragraphStyle?.textList?.style == .unordered
    }

    /// Checks if the next character that the user types will be part of a link anchor, or not.

    /// - Returns: True if the attribute exists at the specified index.
    ///
    open func formattingAtIndexContainsBold(_ index: Int) -> Bool {
        let formatter = BoldFormatter()
        return formatter.present(in: storage, at: index)
    }


