anchor.diff:              t.Start()
               t
           
  -        let rec awaitPauseAfterChange (timer : DispatcherTimer) = 
  +        let rec awaitPauseAfterChange (timer: DispatcherTimer) = 
               async { 
                   let! e = Async.EitherEvent(sourceBuffer.Changed, timer.Tick)
                   match e with
  
positive.code:             | _ -> ctx.Post((fun _ -> g (arg)), null))
      
      type Microsoft.FSharp.Control.Async with
          static member EitherEvent(ev1 : IObservable<'a>, ev2 : IObservable<'b>) = 
              synchronize (fun f -> 
                  Async.FromContinuations((fun (cont, _econt, _ccont) -> 
                      let rec callback1 = 
  
negative.code: open FSharpVSPowerTools.ProjectSystem
  
  // The tag that carries metadata about F# color-regions.
  type DepthRegionTag(info: int * int * int * int) = 
      interface ITag
      // why are (line,startColumn,endColumn,depth) here, and not just depth?  
      // because we might have range info for indent coloring on a blank line, and there are no chars to tag there, so we put a tag in column 0 and carry all this info as metadata
      member x.Info = info
  
  type DepthTagger(sourceBuffer: ITextBuffer, filename: string) as self = 
      // computed periodically on a background thread
      let mutable results: _ [] = null
      let resultsLock = obj() // lock for reading/writing "results"
      // only updated on the UI thread in the GetTags method
      let mutable prevTags: ITagSpan<DepthRegionTag> [] = null
      let mutable prevSnapshot = null
      let mutable prevResults = null
      // for the event
  