anchor.diff:              match force, currentState with
               | true, _ -> true
               | _, NoData -> true
  -            | _, Updating oldSnapshot -> oldSnapshot.Snapshot <> snapshot
  -            | _, Data (oldSnapshot, _) -> oldSnapshot.Snapshot <> snapshot
  +            | _, Updating oldSnapshot -> oldSnapshot <> snapshot
  +            | _, Data (oldSnapshot, _) -> oldSnapshot <> snapshot
   
  -        state.Swap (fun _ -> Updating (SnapshotSpan (snapshot, 0, snapshot.Length))) |> ignore
  +        state.Swap (fun _ -> Updating snapshot) |> ignore
                   
           if needUpdate then
               let worker = 
  
positive.code:                 |> Seq.choose (fun loc -> 
                      maybe {
                          let! clType = getClassificationType loc.Category
                          let! span = fromRange snapshot.Snapshot (loc.WordSpan.ToRange())
                          return clType, span.TranslateTo(snapshot.Snapshot, SpanTrackingMode.EdgeExclusive) 
                      })
                  |> Seq.takeWhile (fun (_, span) -> span.Start.GetContainingLine().LineNumber <= spanEndLine)
                  |> Seq.map (fun (clType, span) -> ClassificationSpan(span, clType))
  
negative.code:                             getCategoriesAndLocations (symbolsUses, parseResults.ParseTree, lexer, getTextLineOneBased, openDeclarations, entitiesMap)
                              |> Array.sortBy (fun { WordSpan = { Line = line }} -> line)
                          
                          state.Swap (fun _ -> Data (snapshot, spans)) |> ignore
  
                          // TextBuffer is null if a solution is closed at this moment
                          if textDocument.TextBuffer <> null then
  