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: [<NoComparison>]
  type private ClassifierState =
      | NoData
      | Updating of snapshotSpan: SnapshotSpan
      | Data of snapshotSpan: SnapshotSpan * spans: CategorizedColumnSpan []
  
  type SyntaxConstructClassifier (textDocument: ITextDocument, 
                                  buffer: ITextBuffer, 
  
negative.code:                 |> Seq.choose (fun loc -> 
                      maybe {
                          let! clType = getClassificationType loc.Category
                          // Create a span on the original snapshot
                          let! span = fromRange snapshot (loc.WordSpan.ToRange())
                          // Translat the span to the new snapshot
                          return clType, span.TranslateTo(snapshotSpan.Snapshot, SpanTrackingMode.EdgeExclusive) 
                      })
                  |> Seq.takeWhile (fun (_, span) -> span.Start.GetContainingLine().LineNumber <= spanEndLine)
                  |> Seq.map (fun (clType, span) -> ClassificationSpan(span, clType))
  