     return self
   }
 
-  // FIXME: Locales make this interesting
+  // FIXME: Unicode and locales make this interesting
   var _lowercase : UnicodeScalar {
     if self >= "A" && self <= "Z" {
       return UnicodeScalar(UInt32(self) + 32)

    if self == "\n" || self == "\r" { return true }
    return self == "\u{0B}" || self == "\u{0C}"
  }
}

extension UnicodeScalar : Printable, DebugPrintable {

    return (self >= "A" && self <= "Z") || (self >= "a" && self <= "z")
  }

  // FIXME: Is there an similar term of art in Unicode?
  func _isASCIIDigit() -> Bool {
    return self >= "0" && self <= "9"
  }

  // FIXME: Unicode makes this interesting
  func _isDigit() -> Bool {
    return _isASCIIDigit()
  }

  // FIXME: Unicode and locales make this interesting
  var _uppercase : UnicodeScalar {
    if self >= "a" && self <= "z" {
      return UnicodeScalar(UInt32(self) - 32)
