anchor.diff:          resultPath := !resultPath + directorySeparator + ".."
           baseLocation := Path.GetDirectoryName !baseLocation
   
  -        if (!baseLocation).EndsWith directorySeparator then
  +        if (!baseLocation) |> endsWith directorySeparator then
               baseLocation := (!baseLocation).Substring(0, (!baseLocation).Length - 1)
   
  -    resultPath := (!resultPath + targetLocation.Substring((!baseLocation).Length)).Replace(directorySeparator + directorySeparator,directorySeparator)
  +    resultPath := 
  +        (!resultPath + targetLocation.Substring((!baseLocation).Length))
  +          |> replace (directorySeparator + directorySeparator) directorySeparator
   
       // preprocess .\..\ case
  -    if (!resultPath).StartsWith (sprintf ".%s..%s" directorySeparator directorySeparator) then
  +    if (sprintf ".%s..%s" directorySeparator directorySeparator) <* (!resultPath) then
           (!resultPath).Substring(2, (!resultPath).Length - 3)
       else
           (!resultPath).Substring(0, (!resultPath).Length - 1)
  
positive.code: /// Appends all lines to a file line by line
  let AppendToFile file lines = WriteToFile true file lines
  
  /// Converts a sequence of strings to a string with delimiters
  let inline separated delimiter (items: string seq) = String.Join(delimiter, Array.ofSeq items)
  
  /// Reads a file as one text
  let ReadFileAsString file = File.ReadAllText(file,Encoding.Default)
  
  /// Replaces the text in the given file
  let ReplaceInFile replaceF fileName =
  
negative.code:     |> ReadFileAsString
      |> replaceF
      |> ReplaceFile fileName
  
  let LinuxLineBreaks = "\n"
  let WindowsLineBreaks = "\r\n"
  