anchor.diff:      /// return null if the string is null
       let trim (value: string) = match value with null -> null | x -> x.Trim()
       
  +    /// Splits a string into substrings based on the strings in the array seperators
       let split options (separator: string[]) (value: string) = 
           match value with null -> null | x -> x.Split(separator, options)
   
  
positive.code:     let inline fail msg = Printf.kprintf Debug.Fail msg
      let inline isNull v = match v with | null -> true | _ -> false
      let inline isNotNull v = v |> (not << isNull)
  
  [<RequireQualifiedAccess>]
  [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
  
negative.code:         match str with
          | null -> null, None
          | _ ->
              let chars = 
                  let mutable charr = (str.ToCharArray ())
                  Array.revInPlace &charr; charr
              let digits = 
                  let mutable darr = chars |> Array.takeWhile Char.IsDigit
                  Array.revInPlace &darr; darr
              String digits
              |> function
                 | "" -> str, None
                 | index -> str.Substring (0, str.Length - index.Length), Some (int index)
  