anchor.diff:              | None -> 
                   None
   
  -
  -let runMain argv = 
  -    let inline hasArgument name args = 
  -        args |> Array.exists (fun x -> x = ("--" + name) || x = ("/" + name))
  -    let inline stripArgument name args = 
  -        args |> Array.filter (fun x -> x <> ("--" + name) && x <> ("/" + name))
  -
  -    // Check for --pause as the very first step so that a compiler can be attached here.
  -    if hasArgument "pause" argv then 
  -        System.Console.WriteLine("Press any key to continue...")
  -        System.Console.ReadKey() |> ignore
  +module Driver = 
  +    let main argv = 
  +        let inline hasArgument name args = 
  +            args |> Array.exists (fun x -> x = ("--" + name) || x = ("/" + name))
  +        let inline stripArgument name args = 
  +            args |> Array.filter (fun x -> x <> ("--" + name) && x <> ("/" + name))
  +
  +        // Check for --pause as the very first step so that a compiler can be attached here.
  +        if hasArgument "pause" argv then 
  +            System.Console.WriteLine("Press any key to continue...")
  +            System.Console.ReadKey() |> ignore
         
  -    if runningOnMono && hasArgument "resident" argv then 
  -        let argv = stripArgument "resident" argv
  -
  -        if not (hasArgument "nologo" argv) then 
  -            printfn "%s" (FSComp.SR.buildProductName(FSharpEnvironment.FSharpTeamVersionNumber))
  -            printfn "%s" (FSComp.SR.optsCopyright())
  -
  -        let fscServerExe = typeof<TypeInThisAssembly>.Assembly.Location
  -        let exitCodeOpt = FSharpResidentCompiler.FSharpCompilationServer.TryCompileUsingServer (fscServerExe, argv)
  -        match exitCodeOpt with 
  -        | Some exitCode -> exitCode
  -        | None -> 
  -            mainCompile (argv, true, QuitProcessExiter, None)
  +        if runningOnMono && hasArgument "resident" argv then 
  +            let argv = stripArgument "resident" argv
  +
  +            if not (hasArgument "nologo" argv) then 
  +                printfn "%s" (FSComp.SR.buildProductName(FSharpEnvironment.FSharpTeamVersionNumber))
  +                printfn "%s" (FSComp.SR.optsCopyright())
  +
  +            let fscServerExe = typeof<TypeInThisAssembly>.Assembly.Location
  +            let exitCodeOpt = FSharpResidentCompiler.FSharpCompilationServer.TryCompileUsingServer (fscServerExe, argv)
  +            match exitCodeOpt with 
  +            | Some exitCode -> exitCode
  +            | None -> 
  +                mainCompile (argv, true, QuitProcessExiter)
  +                0
  +
  +        elif runningOnMono && hasArgument "server" argv then 
  +            // Install the right exiter so we can catch "StopProcessing" without exiting the server
  +            let exiter = { new Exiter with member x.Exit n = raise StopProcessing }
  +            FSharpResidentCompiler.FSharpCompilationServer.RunServer(exiter)        
               0
  -
  -    elif runningOnMono && hasArgument "server" argv then 
  -        // Install the right exiter so we can catch "StopProcessing" without exiting the server
  -        let exiter = { new Exiter with member x.Exit n = raise StopProcessing }
  -        FSharpResidentCompiler.FSharpCompilationServer.RunServer(exiter)        
  -        0
           
  -    else
  -        mainCompile (argv, false, QuitProcessExiter, None)
  -        0
  -
  +        else
  +            mainCompile (argv, false, QuitProcessExiter)
  +            0 
  +
  +
  +
  +
  +[<Dependency("FSharp.Compiler",LoadHint.Always)>] 
  +do ()
   
   [<EntryPoint>]
   let main(argv) =
  
positive.code: 
  module internal Microsoft.FSharp.Compiler.CommandLineMain
  
  open System.IO
  open System.Text
  open System.Reflection
  open Microsoft.FSharp.Compiler
  open Microsoft.FSharp.Compiler.AbstractIL.IL // runningOnMono 
  open Microsoft.FSharp.Compiler.AbstractIL.Internal.Library 
  open Microsoft.FSharp.Compiler.ErrorLogger
  open Microsoft.FSharp.Compiler.Driver
  open Internal.Utilities
  
negative.code:     if not runningOnMono then Lib.UnmanagedProcessExecutionOptions.EnableHeapTerminationOnCorruption() (* SDL recommendation *)
  
      try 
          Driver.main(Array.append [| "fsc.exe" |] argv); 
      with e -> 
          errorRecovery e Microsoft.FSharp.Compiler.Range.range0; 
          1
  