anchor.diff:  import 'package:analysis_server/src/analysis_server.dart';
   import 'package:analysis_server/src/analysis_server_abstract.dart';
   import 'package:analysis_server/src/domain_completion.dart';
  +import 'package:analysis_server/src/lsp/lsp_analysis_server.dart'
  +    show LspAnalysisServer;
   import 'package:analysis_server/src/plugin/plugin_manager.dart';
   import 'package:analysis_server/src/server/http_server.dart';
   import 'package:analysis_server/src/services/completion/completion_performance.dart';
  
positive.code: // TODO(devoncarew): We're not currently tracking the time spent in specific
  // lints by default (analysisOptions / driverOptions enableTiming)
  class PluginsPage extends DiagnosticPageWithNav {
    PluginsPage(DiagnosticsSite site)
        : super(site, 'plugins', 'Plugins', description: 'Plugins in use.');
  
    @override
    Future generateContent(Map<String, String> params) async {
      // TODO(brianwilkerson) Determine whether this await is necessary.
      await null;
  
      // TODO(dantup): Maybe we shouldn't show this in the nav at all?
      if (this.server is! AnalysisServer) {
        generateNotApplicablePage();
        return;
      }
  
      // TODO(dantup): Is there a better way? The is! above doesn't seem to
      // work, possible because 'server' is not immutable (it's a better) and maybe
      // because the code below is in a callback?
      final server = this.server as AnalysisServer;
  
      h3('Analysis plugins');
      List<PluginInfo> analysisPlugins = server.pluginManager.plugins;
  
negative.code: 
      buf.writeln('</div>');
    }
  }
  
  class DiagnosticsSite extends Site implements AbstractGetHandler {
  