anchor.diff:  ﻿namespace FSharpVSPowerTools.QuickInfo
   
   open System
  +open System.Text
   open Microsoft.VisualStudio.Text.Editor
   open Microsoft.VisualStudio.Text
   open Microsoft.VisualStudio.Shell.Interop
  
positive.code:                 let! errors = checkResults.GetErrors() |> liftMaybe
                  do! (if Array.isEmpty errors then None else Some()) |> liftMaybe
                  return 
                      [| for e in errors do
                           if String.Equals(textDocument.FilePath, e.FileName, StringComparison.InvariantCultureIgnoreCase) then
                               match fromRange buffer.CurrentSnapshot (e.StartLineAlternate, e.StartColumn, e.EndLineAlternate, e.EndColumn) with
                               | Some span when point.InSpan span -> yield sprintf "%+A: %s" e.Severity e.Message 
                               | _ -> () |]
                      |> String.concat Environment.NewLine 
              } 
              |> Async.map updateError
              |> Async.StartInThreadPoolSafe
          | _ -> updateError None
  
      let docEventListener = new DocumentEventListener ([ViewChange.layoutEvent view; ViewChange.caretEvent view], 200us, updateAtCaretPosition)
  
  
negative.code:     do visual.Root.DataContext <- model
      let buffer = view.TextBuffer
  
      let updateError (errors: (FSharpErrorSeverity * string list) []) = lock updateLock <| fun () -> 
          model.QuickInfo <-
              errors 
              |> Array.map (fun (severity, errors) -> 
                  let title = 
                      match errors with
                      | [_] -> sprintf "%+A" severity
                      | _ -> sprintf "%+As (%d)" severity errors.Length
                  title + ": " + 
                  (match errors with 
                   | [e] -> e
                   | _ -> errors |> List.mapi (fun i e -> sprintf "%d. %s" (i + 1) e) |> List.toArray |> String.concat ", "))
              |> String.concat ", "
  
      let flattenLines (x: string) =
          match x with
          | null -> ""
          | x -> x.Replace("\r\n", ", ").Replace("\r", ", ").Replace("\n", ", ") 
  
      let updateAtCaretPosition () =
          let caretPos = view.Caret.Position
  