     return r
   }
 
-  mutating func eatThree(c1: UInt8, c2: UInt8, c3: UInt8) -> Bool {
+  public mutating func eatThree(c1: UInt8, c2: UInt8, c3: UInt8) -> Bool {
     return matchThree(c1, c2: c2, c3: c3, consume: true)
   }
 
-  mutating func matchThree(c1: UInt8, c2: UInt8, c3: UInt8,
+  public mutating func matchThree(c1: UInt8, c2: UInt8, c3: UInt8,
       consume: Bool = false) -> Bool {
     var r = false
     let i = currentIndex


  // String list matching

  mutating func makeFirstCharTable(strings: [String]) -> FirstCharTable {
    let len = strings.count
    var a = FirstCharTable(count: 256, repeatedValue: nil)
    for i in 0..<len {

    return r
  }

  public mutating func eatLowerCase() -> Bool {
    return matchLowerCase(true) != nil
  }

  public mutating func eatLowerCases() -> Bool {
    return matchWhileLowerCase(true) >= 0
  }

  // a-z
  public mutating func matchLowerCase(consume: Bool = false) -> UInt8? {
    var r: UInt8?
    let i = currentIndex
    if i < lineEndIndex {
