anchor.diff:  
   /// [omit]
   let start (proc : Process) =
  -    try
  -        System.Console.OutputEncoding <- System.Text.Encoding.UTF8
  -    with exn ->
  -        logfn "Failed setting UTF8 console encoding, ignoring error... %s." exn.Message
  +    if isMono || AlwaysSetProcessEncoding then
  +        try
  +            System.Console.OutputEncoding <- System.Text.Encoding.UTF8
  +        with exn ->
  +            logfn "Failed setting UTF8 console encoding, ignoring error... %s." exn.Message
   
       if isMono && proc.StartInfo.FileName.ToLowerInvariant().EndsWith(".exe") then
           proc.StartInfo.Arguments <- "--debug \"" + proc.StartInfo.FileName + "\" " + proc.StartInfo.Arguments
           proc.StartInfo.FileName <- monoPath
  +
       proc.Start() |> ignore
       startedProcesses.Add(proc.Id, proc.StartTime) |> ignore
   
  
positive.code: open System.Collections.Concurrent
  open System.ServiceProcess
  
  /// [omit]
  type internal ConcurrentBag<'T> with
      member internal this.Clear() =
  
negative.code:         { ExitCode = exitCode
            Messages = messages
            Errors = errors }
  
  
  /// Runs the given process and returns the exit code.
  /// ## Parameters
  