anchor.diff:              Some (index + 1)
           else None
   
  -    /// Returns the index of the last character in the substring which satisfies the given predicate.
  +    /// <summary>Returns the index of the last character in the substring which satisfies the given predicate.</summary>
  +    /// <param name="predicate"></param>
  +    /// <param name="substr"></param>
  +    /// <returns></returns>
       [<CompiledName("FindIndexBack")>]
       let findIndexBack (predicate : char -> bool) (substr : substring) : int =
           // Preconditions
  
positive.code:     let empty : substring =
          substring (System.String.Empty, 0, 0)
  
      /// Returns the string underlying the given substring.
      [<CompiledName("String")>]
      let inline string (substr : substring) : string =
          substr.String
  
      /// The starting offset of the substring within it's underlying string.
      [<CompiledName("Offset")>]
      let inline offset (substr : substring) : int =
          substr.Offset
  
      /// Returns the length of the substring.
      [<CompiledName("Length")>]
      let inline length (substr : substring) : int =
          substr.Length
  
      /// Gets a character from the substring.
      [<CompiledName("Get")>]
      let inline get (substr : substring) index : char =
          substr.[index]
  
      /// Is the substring empty?
      [<CompiledName("IsEmpty")>]
      let inline isEmpty (substr : substring) : bool =
          substr.IsEmpty
  
      /// Returns a substring which covers the entire length of the given string.
      [<CompiledName("OfString")>]
      let inline ofString (str : string) : substring =
          substring (str, 0, str.Length)
  
      /// Instantiates the substring as a string.
      [<CompiledName("ToString")>]
      let inline toString (substr : substring) : string =
          substr.ToString ()
  
      /// Returns the characters in the given substring as a Unicode character array. 
      [<CompiledName("ToArray")>]
      let inline toArray (substr : substring) : char[] =
          substr.ToCharArray ()
  
      /// Determines whether the beginning of a substring matches the specified string.
      [<CompiledName("StartsWith")>]
      let inline startsWith (value : string) (substr : substring) : bool =
          substr.StartsWith value
  
      /// Determines whether the end of a substring matches the specified string.
      [<CompiledName("EndsWith")>]
      let inline endsWith (value : string) (substr : substring) : bool =
          substr.EndsWith value
  
      /// Extracts the first (left-most) character from a substring, returning a Some value
      /// containing the character and the remaining substring. Returns None if the given
      /// substring is empty.
      [<CompiledName("Read")>]
      let read (substr : substring) : (char * substring) option =
          if substr.Length = 0 then None
  
negative.code:                 state <- folder.Invoke (substr.[i], state)
              state
  
      /// <summary>Removes all leading occurrences of characters not satisfying the given predicate from a substring.</summary>
      /// <param name="predicate"></param>
      /// <param name="substr"></param>
      /// <returns></returns>
      [<CompiledName("TrimStartWith")>]
      let trimStartWith (predicate : char -> bool) (substr : substring) =
          // Preconditions
  