anchor.diff:  let directorySeparator = Path.DirectorySeparatorChar.ToString()
   
   /// Convert the given windows path to a path in the current system
  -let convertWindowsToCurrentPath (windowsPath:string) = 
  -    if (windowsPath.Length > 2 && windowsPath.[1] = ':' && windowsPath.[2] = '\\') then
  -        windowsPath
  -    else
  -        windowsPath.Replace(@"\",directorySeparator)
  +let convertWindowsToCurrentPath (windowsPath : string) = 
  +    if (windowsPath.Length > 2 && windowsPath.[1] = ':' && windowsPath.[2] = '\\') then windowsPath
  +    else windowsPath.Replace(@"\", directorySeparator)
   
   /// Contains the IO encoding which is given via build parameter "encoding" or the default encoding if no encoding was specified.
  -let encoding =
  +let encoding = 
       match getBuildParamOrDefault "encoding" "default" with
       | "default" -> Text.Encoding.Default
       | enc -> Text.Encoding.GetEncoding(enc)
  
positive.code: let environVar name = Environment.GetEnvironmentVariable name
  
  /// Combines two path strings using Path.Combine
  let inline combinePaths path1 (path2:string) = Path.Combine(path1,path2.TrimStart [|'\\'; '/'|])
  
  /// Combines two path strings using Path.Combine
  let inline (@@) path1 path2 = combinePaths path1 path2
  
  /// Retrieves all environment variables from the given target
  let environVars target = 
    [for e in Environment.GetEnvironmentVariables target ->
       let e1 = e :?> Collections.DictionaryEntry
       e1.Key,e1.Value]
  
  /// Sets the environment variable with the given name
  let setEnvironVar name value = Environment.SetEnvironmentVariable(name,value) 
  
  /// Retrieves the environment variable with the given name or returns the default if no value was set
  let environVarOrDefault name defaultValue =
      let var = environVar name
      if String.IsNullOrEmpty var then defaultValue else var
  
  /// Retrieves the environment variable or None
  let environVarOrNone name =
      let var = environVar name
      if String.IsNullOrEmpty var  then None else Some var
  
  /// Retrieves the application settings variable with the given name
  let appSetting (name:string) = ConfigurationManager.AppSettings.[name]
  
  /// Returns if the build parameter with the given name was set
  let inline hasBuildParam name = environVar name <> null
  
  /// Returns the value of the build parameter with the given name was set if it was set and otherwise the given default value
  let inline getBuildParamOrDefault name defaultParam = if hasBuildParam name then environVar name else defaultParam
  
  /// Returns the value of the build parameter with the given name if it was set and otherwise an empty string
  let inline getBuildParam name = getBuildParamOrDefault name String.Empty
  
negative.code: /// The path of Program Files (x86)
  /// It seems this covers all cases where PROCESSOR\_ARCHITECTURE may misreport and the case where the other variable 
  /// PROCESSOR\_ARCHITEW6432 can be null
  let ProgramFilesX86 = 
      let wow64 = (environVar "PROCESSOR_ARCHITEW6432")
      let globalArch = (environVar "PROCESSOR_ARCHITECTURE")
      match wow64, globalArch with
      | "AMD64", "AMD64" | null, "AMD64" | "x86", "AMD64" -> environVar "ProgramFiles(x86)"
      | _ -> environVar "ProgramFiles"
  
  /// The system root environment variable. Typically "C:\Windows"
  let SystemRoot = environVar "SystemRoot"
  