anchor.diff:      |> Seq.fold (fun (acc : string) c -> acc + string c) ""
   
   /// Trims the given string
  -[<System.Obsolete "use Fake.Core.String instead">]
  +[<System.Obsolete "FAKE0001 use Fake.Core.String instead">]
   let inline trim (x : string) = 
       if isNullOrEmpty x then x
       else x.Trim()
   
   /// Trims the given string
  -[<System.Obsolete "use Fake.Core.String instead">]
  +[<System.Obsolete "FAKE0001 use Fake.Core.String instead">]
   let inline trimChars chars (x : string) = 
       if isNullOrEmpty x then x
       else x.Trim chars
   
   /// Trims the start of the given string
  -[<System.Obsolete "use Fake.Core.String instead">]
  +[<System.Obsolete "FAKE0001 use Fake.Core.String instead">]
   let inline trimStartChars chars (x : string) =
       if isNullOrEmpty x then x
       else x.TrimStart chars
   
   /// Trims the end of the given string
  -[<System.Obsolete "use Fake.Core.String instead">]
  +[<System.Obsolete "FAKE0001 use Fake.Core.String instead">]
   let inline trimEndChars chars (x : string) =
       if isNullOrEmpty x then x
       else x.TrimEnd chars
   
   /// Lifts a string to an option
  -[<System.Obsolete "use Fake.Core.String instead">]
  +[<System.Obsolete "FAKE0001 use Fake.Core.String instead">]
   let liftString x = 
       if isNullOrEmpty x then None
       else Some x
   
   /// Reads a file line by line
  -[<System.Obsolete "use Fake.Core.String instead">]
  +[<System.Obsolete "FAKE0001 use `open Fake.IO.FileSystem` and `File.Read` instead">]
   let ReadFile(file : string) = 
       seq { 
           use textReader = new StreamReader(file, encoding)
  
positive.code:     builder
  
  /// Returns the text from the StringBuilder
  [<System.Obsolete "use Fake.Core.String instead">]
  let inline toText (builder : StringBuilder) = builder.ToString()
  
  /// [omit]
  [<System.Obsolete "use Fake.Core.String instead">]
  let private regexes = new Dictionary<_, _>()
  
  /// [omit]
  [<System.Obsolete "use Fake.Core.String instead">]
  let getRegEx pattern = 
      match regexes.TryGetValue pattern with
      | true, regex -> regex
      | _ -> (new System.Text.RegularExpressions.Regex(pattern))
  
  /// [omit]
  [<System.Obsolete "use Fake.Core.String instead">]
  let regex_replace pattern (replacement : string) text = (getRegEx pattern).Replace(text, replacement)
  
  /// Checks whether the given char is a german umlaut.
  [<System.Obsolete "use Fake.Core.String instead">]
  let isUmlaut c = Seq.exists ((=) c) [ 'ä'; 'ö'; 'ü'; 'Ä'; 'Ö'; 'Ü'; 'ß' ]
  
  /// Converts all characters in a string to lower case.
  [<System.Obsolete "use Fake.Core.String instead">]
  let inline toLower (s : string) = s.ToLower()
  
  /// Returns all standard chars and digits.
  [<System.Obsolete "use Fake.Core.String instead">]
  let charsAndDigits = [ 'a'..'z' ] @ [ 'A'..'Z' ] @ [ '0'..'9' ]
  
  /// Checks whether the given char is a standard char or digit.
  [<System.Obsolete "use Fake.Core.String instead">]
  let isLetterOrDigit c = List.exists ((=) c) charsAndDigits
  
  /// Trims the given string with the DirectorySeparatorChar
  [<System.Obsolete "use Fake.Core.String instead">]
  let inline trimSeparator (s : string) = s.TrimEnd Path.DirectorySeparatorChar
  
  /// Trims all special characters from a string.
  [<System.Obsolete "use Fake.Core.String instead">]
  let inline trimSpecialChars (text : string) = 
      text
      |> Seq.filter isLetterOrDigit
  
negative.code:         else (!resultPath).Substring(0, (!resultPath).Length - 1)
  
  /// Replaces the absolute path to a relative path.
  [<System.Obsolete "FAKE0001 use Fake.Core.String instead">]
  let inline toRelativePath value = 
      match relativePaths.TryGetValue value with
      | true, x -> x
  