     in c: C,
     format: (MatchData)->String = { String(reflecting: $0) })
   where C.Index == Index, C.Element == Element
-  // The following requirements go away with upcoming generics features
-  , C.SubSequence : Collection {
+  {
     print("searching for /\(self)/ in \(c.u8str)...", terminator: "")
     if let (extent, data) = self.found(in: c) {
       print(


  func matched<C: Collection>(atStartOf c: C) -> MatchResult<Index, MatchData>
  where C.Index == Index, C.Element == Element
  // The following requirements go away with upcoming generics features
  , C.SubSequence : Collection  
  {
    var src0 = c[c.startIndex..<c.endIndex]
    while true {

  
  func matched<C: Collection>(atStartOf c: C) -> MatchResult<Index, ()>
  where C.Index == Index, C.Element == Element 
  {
    return c.isEmpty
    ? .notFound(resumeAt: c.endIndex)
