anchor.diff:      /// <returns></returns>
       [<CompiledName("Read")>]
       let read (substr : substring) : (char * substring) option =
  -        if substr.Length = 0 then None
  -        else
  -            // "Extract" the first (left-most) character from the substring.
  -            Some (substr.[0], substr.[1..])
  +        // Wrap the Substring.TryRead method in a more functional style.
  +        let mutable c = Unchecked.defaultof<_>
  +        let mutable remaining = Unchecked.defaultof<_>
  +        if substr.TryRead (&c, &remaining) then
  +            Some (c, remaining)
  +        else None
   
       //
       let inline private subUnsafe (substr : substring) offset count : substring =
  
positive.code: open System
  //open System.Diagnostics.Contracts
  open System.Globalization
  
  
  /// Represents a segment of a string.
  
negative.code:             this.String
          else
              this.String.Substring (this.Offset, this.Length)
  
      //
      member this.TryRead ([<Out>] c : byref<char>, [<Out>] remaining : byref<substring>) : bool =
          if this.Length = 0 then
              // Assign default values to the output parameters.
              c <- Unchecked.defaultof<_>
              remaining <- Unchecked.defaultof<_>
              false
          else
              // Extract the first (left-most) character from the substring.
              c <- this.[0]
              remaining <- this.[1..]
              true
  
      /// <summary>
      /// Compares two specified <see cref="substring"/> objects by evaluating the numeric values of the corresponding
  