anchor.diff:      let main argv =
           let inStream = Console.In
           let outStream = Console.Out
  +
  +        Console.SetOut TextWriter.Null
  +
  +        MonoDevelop.Projects.HelpService.AsyncInitialize()
  +
           let server = "MonoDevelop" + Guid.NewGuid().ToString("n")
           // This flag makes fsi send the SERVER-PROMPT> prompt
           // once it's output the header
  
positive.code:             else
                  None
  
          let writeLine (s:string) =
              async {
                  do! outStream.WriteLineAsync s |> Async.AwaitTask
              }
  
          let rec main(currentInput) =
              let parseInput() =
                  async {
  
negative.code:                                 let result, warnings = fsiSession.EvalInteractionNonThrowing (currentInput + input)
                                  match result with
                                  | Choice1Of2 () -> ()
                                  | Choice2Of2 exn -> do! writeOutput (exn |> string)
                                  for w in warnings do
                                      do! writeOutput (sprintf "%s at %d,%d" w.Message w.StartLineAlternate w.StartColumn)
  
                                  if not (input.StartsWith "#silentCd") then
                                      do! writeOutput "SERVER-PROMPT>"
                              with
                              | exn -> do! writeOutput (exn |> string)
                              return ""
                          else
                              return currentInput + "\n" + input
                      | Tooltip filter ->
                          let! tooltip = Completion.getCompletionTooltip filter
                          do! writeData "tooltip" tooltip
                          return currentInput
                      | Completion context ->
                          let col, lineStr = context
                          let! results = Completion.getCompletions(fsiSession, lineStr, col)
                          do! writeData "completion" results
                          return currentInput
                      | _ -> do! writeOutput (sprintf "Could not parse command - %s" command)
                             return currentInput
                  }
              let currentInput = parseInput() |> Async.RunSynchronously
  