anchor.diff:              | None, _, _ -> false
               | _, true, _ -> true
               | _, _, FastStage.NoData -> true
  -            | Some snapshot, _, FastStage.Updating oldSnapshot -> oldSnapshot <> snapshot
  +            | Some snapshot, _, FastStage.Updating (_, oldSnapshot) -> oldSnapshot <> snapshot
               | Some snapshot, _, FastStage.Data { Snapshot = oldSnapshot } -> oldSnapshot <> snapshot
   
           snapshot |> Option.iter (fun snapshot -> 
  -            fastState.Swap (fun _ -> Updating snapshot) |> ignore)
  +            fastState.Swap (fun oldState -> 
  +                let oldData = 
  +                    match oldState with
  +                    | FastStage.Data data -> Some data
  +                    | FastStage.Updating (data, _) -> data
  +                    | _ -> None
  +                Updating (oldData, snapshot)) |> ignore)
                   
           if needUpdate then
               let worker = async {
  
positive.code: [<NoComparison>]
  type private FastStage =
      | NoData
      | Updating of snapshot: ITextSnapshot
      | Data of FastStageData 
  
  [<NoComparison>]
  
negative.code:         | FastStage.NoData -> 
              // Only schedule an update on signature files
              if isSignatureExtension(Path.GetExtension(textDocument.FilePath)) then
                  // If not yet schedule an action, do it now. 
                  updateSyntaxConstructClassifiers false
              [||]
          | FastStage.Updating _ -> [||]
  