anchor.diff:                  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 
  +                    seq { 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 e.Severity, flattenLines e.Message
  +                                | _ -> () }
  +                    |> Seq.groupBy fst
  +                    |> Seq.sortBy (fun (severity, _) -> if severity = FSharpErrorSeverity.Error then 0 else 1)
  +                    |> Seq.map (fun (s, es) -> s, es |> Seq.map snd |> List.ofSeq)
  +                    |> Seq.toArray
               } 
  -            |> Async.map updateError
  +            |> Async.map (Option.getOrElse [||] >> updateError)
               |> Async.StartInThreadPoolSafe
  -        | _ -> updateError None
  +        | _ -> updateError [||]
   
       let docEventListener = new DocumentEventListener ([ViewChange.layoutEvent view; ViewChange.caretEvent view], 200us, updateAtCaretPosition)
   
  
positive.code:     do visual.Root.DataContext <- model
      let buffer = view.TextBuffer
  
      let updateError error = lock updateLock (fun () -> model.QuickInfo <- match error with Some x -> x | None -> "")
  
      let updateAtCaretPosition () =
          let caretPos = view.Caret.Position
  
negative.code: ﻿namespace FSharpVSPowerTools.QuickInfo
  
  open System
  open System.Text
  open Microsoft.VisualStudio.Text.Editor
  open Microsoft.VisualStudio.Text
  open Microsoft.VisualStudio.Shell.Interop
  