anchor.diff:  
     void _refreshAnalysisRoots() {
       // Always include any temporary analysis roots for open files.
  -    final includedPaths = HashSet<String>.of(_explicitAnalysisRoots)
  -      ..addAll(_temporaryAnalysisRoots.values)
  -      ..toList();
  +    final includedPaths = _explicitAnalysisRoots.toSet()
  +      ..addAll(_temporaryAnalysisRoots.values);
   
       final excludedPaths = clientConfiguration.analysisExcludedFolders
           .expand((excludePath) => isAbsolute(excludePath)
  
positive.code:             // calling workspace/configuration whenever workspace folders change
              // and caching the config for each one.
              : _explicitAnalysisRoots.map((root) => join(root, excludePath)))
          .toList();
  
      declarationsTracker?.discardContexts();
      notificationManager.setAnalysisRoots(includedPaths.toList(), excludedPaths);
      contextManager.setRoots(includedPaths.toList(), excludedPaths);
      addContextsToDeclarationsTracker();
    }
  
  
negative.code:   /// A progress reporter for analysis status.
    ProgressReporter analyzingProgressReporter;
  
    /// The last paths that were set as included analysis roots.
    Set<String> _lastIncludedRootPaths;
  
    /// The last paths that were set as excluded analysis roots.
    Set<String> _lastExcludedRootPaths;
  
    /// Initialize a newly created server to send and receive messages to the
    /// given [channel].
    LspAnalysisServer(
  