anchor.diff:      let mutable ranges : SnapshotSpan [] = [||]
   
       let triggerUpdate snapshot newRanges =
  -        ranges <- Array.map (fun x -> SnapshotSpan.OfRange(snapshot, x)) newRanges
  +        ranges <- Array.map (fun x -> rangeToProperOutlineSnapshotSpan snapshot x) newRanges
           tagsChanged.Trigger(
               self,
               SnapshotSpanEventArgs(
  
positive.code:                     buffer.CurrentSnapshot.Length - 1)))
  
      let createTagSpan (ss: SnapshotSpan) =
          let line = ss.Snapshot.GetLineFromPosition(ss.Start.Position)
  
          let lineText =
              lazy match Option.ofNullable (SnapshotSpan(line.Start, line.End).Intersection(ss)) with
                   | Some(ss) -> ss.GetText()
                   | None -> ""
  
          let maxHintLength = 500
          let hintText =
              lazy (if ss.Length > maxHintLength then SnapshotSpan(ss.Start, maxHintLength) else ss).GetText()
  
          TagSpan(
              ss,
              { new IOutliningRegionTag with
                  member x.CollapsedForm      = lineText.Force() :> obj
                  member x.CollapsedHintForm  = hintText.Force() :> obj
                  member x.IsDefaultCollapsed = false
                  member x.IsImplementation   = false
  
negative.code: open Microsoft.FSharp.Compiler.Ast
  open Microsoft.FSharp.Compiler.Range
  open System.Threading
  
  [<Literal>]
  let UpdateDelay = 200us
  [<Literal>]
  let MaxTooltipLines = 30
  
  let visitBinding (Binding(_, _, _, _, _, _, _, _, _, _, range, _)) =
      range
  