anchor.diff:  namespace Farkle.Collections
   
   open Farkle
  +open LanguagePrimitives
  +open Operators.Checked
   open System
  +open System.IO
   
   /// An continuous range of characters that is
   /// stored by its starting index and length.
  
positive.code:     /// These characters will not be shown again on new `CharStreamView`s.
      /// Calling this function does not affect the pinned `CharSpan`s.
      /// Optionally, this character and all before it can be marked to be released from memory.
      let consumeOne doUnpin cs =
          match cs.Source with
          | StaticBlock sb when cs.Position.Index < uint64 sb.Length ->
              cs._Position <- Position.advance sb.Span.[int cs.Position.Index] cs._Position
              if doUnpin then
                  cs.StartingIndex <- cs._Position.Index
          | StaticBlock _ -> failwith "Cannot consume a character stream past its end."
  
      /// Advances a `CharStream`'s position by as many characters the given `CharSpan` indicates.
      /// These characters will not be shown again on new `CharStreamView`s.
  
negative.code: /// Functions to create and work with `CharStream`s.
  /// They are not thread-safe.
  module CharStream =
  
      /// Creates a `CharStreamIndex` from a `CharStream` that points to its current position.
      let getCurrentIndex (cs: CharStream) = CharStreamIndex cs.Position.Index
  