/// A detached modifier with its marker, nestling level, task status (if set), /// and content. struct DetachedModifier { let marker: Character let level: Int let status: TaskStatus? let statusIndex: String.Index? let content: Substring let markerRange: Range /// Finds and parses a detached modifier if present. The accepting markers /// is used to reduce the markers being parsed. static func parse(_ line: Substring, accepting markers: ASCIIByteSet) -> DetachedModifier? { let utf8 = line.utf8 let end = utf8.endIndex var i = utf8.startIndex while i < end, ASCIIHelper.isWhitespace(utf8[i]) { i = utf8.index(after: i) } guard i < end else { return nil } let markerByte = utf8[i] guard markers.contains(markerByte) else { return nil } let markerStart = i var level = 0 var run = i while run < end, utf8[run] == markerByte { level += 1 run = utf8.index(after: run) } let markerRange = markerStart..