anchor.diff:              true
           | StaticBlock _ -> false
           | DynamicBlock db ->
  -            if idx.Index <= db.BufferEndingIndex then
  +            if idx.Index < db.NextReadIndex then
                   c <- cs.Source.[idx.Index]
                   idx <- CharStreamIndex <| idx.Index + GenericOne
                   true
  -            else
  -            match idx.Index - db.BufferEndingIndex with
  -            | 1UL ->
  +            elif idx.Index = db.NextReadIndex then
                   let bufferContentLength = int db.BufferContentLength
                   if bufferContentLength = db.Buffer.Length then
                       if db.BufferStartingIndex <> cs.StartingIndex then
  
positive.code:     /// After that call, the characters at and before the span might be freed from memory, so this function must not be used twice.
      let unpinSpanAndGenerate symbol (fPostProcess: CharStreamCallback<'symbol>) cs (CharSpan (idxStart, idxEnd) as csp) =
          if cs.StartingIndex <= idxStart && cs.LengthSoFar > idxEnd then
              match cs.Source with
              | StaticBlock sb ->
                  cs.StartingIndex <- idxEnd + 1UL
                  let length = idxEnd - idxStart + 1UL |> int
                  let span = sb.Span.Slice(int idxStart, length)
                  fPostProcess.Invoke(symbol, cs.Position, span), cs.Position
          else
              failwithf "Trying to read the character span %O, from a stream that was last read at %d." csp cs.StartingIndex
  
  
negative.code:     /// [omit]
      member x.LengthSoFar =
          match x with
          | StaticBlock sb -> uint64 sb.Length
          | DynamicBlock db -> db.NextReadIndex
  
  /// A data structure that supports efficient and copy-free access to a read-only sequence of characters.
  /// It is not thread-safe.
  