anchor.diff:      /// The default buffer size is 256 characters. If the specified size is not positive, the default is used.
       /// Also, the character stream must be disposed afterwards.
       let ofTextReaderEx bufferSize textReader =
  +        let buffer = 
  +            if bufferSize > 0 then
  +                bufferSize
  +            else
  +                defaultBufferSize
  +            |> Array.zeroCreate
           {
               Reader = textReader
  -            _Buffer =
  -                if bufferSize > 0 then
  -                    bufferSize
  -                else
  -                    defaultBufferSize
  -                |> ArrayPool.Shared.Rent
  +            Buffer = buffer
               BufferStartingIndex = 0UL
  -            NextReadIndex = 0UL
  +            NextReadIndex = uint64 <| textReader.ReadBlock(buffer, 0, buffer.Length)
           } |> DynamicBlock |> create
   
       /// Creates a `CharStream` from a `TextReader`.
  
positive.code: open LanguagePrimitives
  open Operators.Checked
  open System
  open System.Buffers
  open System.IO
  
  /// An continuous range of characters that is
  
negative.code:         /// The `TextReader` that powers the stream.
          Reader: TextReader
          /// [omit]
          mutable Buffer: char[]
          /// The index of the first element in the buffer.
          mutable BufferStartingIndex: 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.NextReadIndex - x.BufferStartingIndex |> int
      interface IDisposable with
          member x.Dispose() =
              x.Reader.Dispose()
              GC.SuppressFinalize(x)
      override x.Finalize() = (x :> IDisposable).Dispose()
  
  /// A representation of a `CharStream`.
  