anchor.diff:  open System.IO.Compression
   open System.Text.RegularExpressions
   open System.Threading
  +open DG.Daxif.Modules.Solution
   
   let rec assoc_right_opt key map = 
     match map with
  
positive.code:       let proxy = env.connect().GetProxy()
        Directory.CreateDirectory(file_location + "/" + env.name) |> ignore;
        printfn "Exporting solution '%s' from %s" complete_solution_name env.name;
        let sol = download_with_retry proxy (file_location + "/" + env.name + "/") complete_solution_name 15 4
        unzip sol;
        (proxy, sol))
      |> function [| dev_sol; prod_sol |] -> (dev_sol, prod_sol) | _ -> failwith "Impossible"
  
negative.code:   let zip = resp.ExportSolutionFile
    File.WriteAllBytes(file_prefix + sol_name + ".zip", zip);
    file_prefix + sol_name
    *)
  
  let rec download_with_retry (env: DG.Daxif.Environment) file_location sol_name minutes retry_count =
    if retry_count > 0 then
      try
        download env file_location sol_name minutes
      with _ ->
        download_with_retry env file_location sol_name minutes retry_count
    else
      download env file_location sol_name minutes
  
  let unzip file =
    printfn "Unpacking zip '%s' to '%s'" (file + ".zip") file;
  