     return r
   }
 
-  func eatHexa() -> Bool {
+  mutating func eatHexa() -> Bool {
     return matchHexa(true) != nil
   }
 
-  func eatWhileHexa() -> Bool {
+  mutating func eatWhileHexa() -> Bool {
     return matchWhileHexa(true) >= 0
   }
 
   // A-F a-f 0-9
-  func matchHexa(consume: Bool = false) -> UInt8? {
+  mutating func matchHexa(consume: Bool = false) -> UInt8? {
     var r: UInt8?
     let i = currentIndex
     if i < lineEndIndex {

    return r
  }

  func eatAlphaUnderlineDigit() -> Bool {
    return matchAlphaUnderlineDigit(true) != nil
  }

  func eatWhileAlphaUnderlineDigit() -> Bool {
    return matchWhileAlphaUnderlineDigit(true) >= 0
  }

  // A-Z a-z _ 0-9
  func matchAlphaUnderlineDigit(consume: Bool = false) -> UInt8? {
    var r: UInt8?
    let i = currentIndex
    if i < lineEndIndex {

    return r
  }

  mutating func eat(fn: (c: UInt8) -> Bool) -> Bool {
    return match(true, fn: fn)
  }

  mutating func match(consume: Bool = false, fn: (c: UInt8) -> Bool) -> Bool {
    var r = false
    let i = currentIndex
    if i < lineEndIndex {
