                 
                 switch scanner.peek(aheadBy: 1) {
                 case Byte.forwardSlash?:
-                    if isClosingTag(name) {
+                    if try isClosingTag(name) {
                         break outerLoop
                     } else {
                         throw Error.malformedXML("Expected closing tag </\(name.fasterString)>")

/// <![CDATA[
let cDataHeader: Bytes = [.lessThan, .exclamationPoint, .leftSquareBracket, .C, .D, .A, .T, .A, .leftSquareBracket]

// ]]>
let cDataFooter: Bytes = [.rightSquareBracket, .rightSquareBracket, .greaterThan]

extension Byte {
    /// <

    
    mutating func extractAttributeValue() throws -> Bytes {
        skip(until: .quote)
        
        try expect([.quote])
        skipWhitespace()
        
        let value = consume(until: .quote)
        
        try expect([.quote])
        
        return value
    }
}

extension XMLParser {
    mutating func isClosingTag(_ expectedTagName: Bytes) throws -> Bool {
        try expect(closingTagHeader)
        
        let tagName = consume(until: tagNameTerminators)
        
        skipWhitespace()
        try expect([.greaterThan])
        
        return tagName.elementsEqual(expectedTagName)
    }
    
    mutating func eatComment() throws {
        try expect(commentHeader)
        
        while scanner.peek() != nil {
            skip(until: .hyphen)
            
            guard !find(commentFooter) else {
                // consume
                try expect(commentFooter)
                break
            }
        }
