         
         let nextScalar = self.nextScalar()
         self.bufferedScalar = nextScalar
+        
+        var fixingResult: TypographizerTokenResult = .ignored
         
         switch first {
         case "\"":

                && CharacterSet.whitespacesAndNewlines.contains(nextScalar)
            {
                tokenText = self.enDash
            }
        default: ()
        }


struct Typographizer {

    enum TypographizerTokenResult: String {
        case openingSingle = "opening-single"
        case closingSingle = "closing-single"
        case openingDouble = "opening-double"
        case closingDouble = "closing-double"
        case apostrophe = "apostrophe"
        case enDash = "en-dash"
        // Unchanged text because it doesn’t contain the trigger characters:
        case unchanged = "unchanged"
        // It’s one of the trigger characters but didn’t need changing:
        case ignored = "ignored"
        // Was skipped because it was either a tag, or protected text between tags.
        case skipped = "skipped"
    }
    
    struct TypographizerToken {
        let result: TypographizerTokenResult
        let text: String
        
        init(_ result: TypographizerTokenResult, _ text: String) {
            self.result = result
            self.text = text
        }
    }
