anchor.diff:      | _ ->
           environVar "ProgramFiles"
   
  -/// System root environment variable. Typically "C:\Windows"
  +/// The system root environment variable. Typically "C:\Windows"
   let SystemRoot = environVar "SystemRoot"
   
  -/// Detemernines if the current system is Unix system
  +/// Detemernines if the current system is an Unix system
   let isUnix = Environment.OSVersion.Platform = PlatformID.Unix
   
  +/// Modifies the ProcessStartInfo according to the platform semantics
   let platformInfoAction (psi:ProcessStartInfo) =
       if isUnix && psi.FileName.EndsWith ".exe" then
           psi.Arguments <- psi.FileName + " " + psi.Arguments
  
positive.code: /// Returns if the build parameter with the given name was set
  let inline hasBuildParam name = environVar name <> null
  
  /// Returns the value of the buildParam if it is set and otherwise "" 
  let inline getBuildParam name = if hasBuildParam name then environVar name else String.Empty
  
  /// Returns the value of the buildParam if it is set and otherwise the default
  let inline getBuildParamOrDefault name defaultParam = if hasBuildParam name then getBuildParam name else defaultParam
  
  /// The path of Program Files - might be x64 on x64 machine
  let ProgramFiles = Environment.GetFolderPath Environment.SpecialFolder.ProgramFiles
  
  /// The path of Program Files (x86)
  /// I think 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")
  
negative.code:     MachineName : string
      NETFrameworks : seq<string>
      UserDomainName : string
  }
  
  /// Retrieves lots of machine specific information
  let getMachineEnvironment() = 
       {
          ProcessorCount = Environment.ProcessorCount
  