anchor.diff:                          Array.Resize(&db.Buffer, db.Buffer.Length * 2)
                   let cRead = db.Reader.Read()
                   if cRead <> -1 then
  -                    db.BufferEndingIndex <- db.BufferEndingIndex + GenericOne
  +                    db.NextReadIndex <- db.NextReadIndex + GenericOne
                       db.Buffer.[int <| idx.Index - db.BufferStartingIndex] <- char cRead
                       c <- cs.Source.[idx.Index]
  -                    idx <- CharStreamIndex db.BufferEndingIndex
  +                    idx <- CharStreamIndex db.NextReadIndex
                       true
                   else
                       false
  -            | _ -> failwithf "Cannot read character at %d because the latest one was read at %d." idx.Index db.BufferEndingIndex
  +            else
  +                failwithf "Cannot read character at %d because the latest one was read at %d." idx.Index db.NextReadIndex
   
       /// Creates a `CharSpan` that contains the next `idxTo` characters of a `CharStream` from its position.
       /// On the dynamic block character stream, it ensures that the characters in the span stay in memory.
  
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
  