         guard recognizer.state == .recognized else {
             return
         }
+
         let locationInTextView = recognizer.location(in: textView)
-        // check if we have an attachment in the position we tapped
         guard let attachment = textView.attachmentAtPoint(locationInTextView) else {
             return
         }
-
-        // move the selection to the position of the attachment
 
         textView.moveSelectionToPoint(locationInTextView)
 

        delegate?.textViewDidChange?(self)
    }
}


    ///
    /// - Returns: `true` if we should remove paragraph attributes, otherwise it returns `false`.
    ///
    private func mustRemoveParagraphAttributesAfterSelectionChange() -> Bool {
        return selectedRange.location == storage.length
            && storage.string.isEmptyParagraph(at: selectedRange.location)
    }

    /// Removes the Paragraph Attributes [Blockquote, Pre, Lists] at the specified range. If the range
    /// is beyond the storage's contents, the typingAttributes will be modified.
    ///
    private func removeParagraphAttributes(at range: NSRange) {
        let formatters: [AttributeFormatter] = [
            BlockquoteFormatter(),
            PreFormatter(placeholderAttributes: defaultAttributes),
