anchor.diff:              addRange cFrom cTo i xs &pos data
               parseCharSet_impl (i + 1) Empty xs &pos data
   
  -let private parseCharSet (pos: inref<_>) data =
  -    parseCharSet_impl 0 Empty (ResizeArray()) &pos data
  +let private parseCharSet startingPosition (pos: inref<_>) data =
  +    parseCharSet_impl startingPosition Empty (ResizeArray()) &pos data
   
   let private unescapeString escapeChar (data: ReadOnlySpan<char>) =
       let sb = StringBuilder(data.Length)
  
positive.code:             char ']'
          ]
          |> terminal name (T(fun ctx data ->
              let data = data.Slice(start.Length, data.Length - start.Length - 1)
              parseCharSet &ctx.StartPosition data |> fChars))
  
      let predefinedSet = mkPredefinedSet "Predefined set" "\p{" chars
      let notPredefinedSet = mkPredefinedSet "All but Predefined set" "\P{" allButChars
  
negative.code:         |> raise
  
  let rec private parseCharSet_impl i state (xs: ResizeArray<_>) (pos: inref<_>) (data: ReadOnlySpan<_>) =
      if i = data.Length then
          match state with
          | Empty -> ()
  