anchor.diff:          mutable Buffer: char[]
           /// The index of the first element in the buffer.
           mutable BufferStartingIndex: uint64
  -        /// The index of the last element in the buffer.
  -        /// This field is stored because the buffer is
  -        /// not always full in cases like an end of input.
  -        mutable BufferEndingIndex: uint64
  +        /// The index of the next character to be read.
  +        mutable NextReadIndex: uint64
       }
       /// The real length of the buffer, excluding the unpinned characters at the end.
  -    member x.BufferContentLength = x.BufferEndingIndex - x.BufferStartingIndex + GenericOne |> int
  +    member x.BufferContentLength = x.NextReadIndex - x.BufferStartingIndex |> int
   
   /// A representation of a `CharStream`.
   type private CharStreamSource =
  
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:             true
          | StaticBlock _ -> false
          | DynamicBlock db ->
              if idx.Index < db.NextReadIndex then
                  c <- cs.Source.[idx.Index]
                  idx <- CharStreamIndex <| idx.Index + GenericOne
                  true
              elif idx.Index = db.NextReadIndex then
                  let bufferContentLength = int db.BufferContentLength
                  if bufferContentLength = db.Buffer.Length then
                      if db.BufferStartingIndex <> cs.StartingIndex then
  