anchor.diff:      hide AnalysisOptions, Element;
   import 'package:analysis_server/src/analysis_logger.dart';
   import 'package:analysis_server/src/channel/channel.dart';
  +import 'package:analysis_server/src/computer/computer_highlights.dart';
  +import 'package:analysis_server/src/computer/computer_highlights2.dart';
  +import 'package:analysis_server/src/computer/computer_outline.dart';
   import 'package:analysis_server/src/computer/new_notifications.dart';
   import 'package:analysis_server/src/context_manager.dart';
  +import 'package:analysis_server/src/domains/analysis/navigation.dart';
  +import 'package:analysis_server/src/domains/analysis/navigation_dart.dart';
  +import 'package:analysis_server/src/domains/analysis/occurrences.dart';
  +import 'package:analysis_server/src/domains/analysis/occurrences_dart.dart';
   import 'package:analysis_server/src/operation/operation.dart';
   import 'package:analysis_server/src/operation/operation_analysis.dart';
   import 'package:analysis_server/src/operation/operation_queue.dart';
  +import 'package:analysis_server/src/plugin/notification_manager.dart';
   import 'package:analysis_server/src/plugin/server_plugin.dart';
  +import 'package:analysis_server/src/protocol_server.dart' as server;
   import 'package:analysis_server/src/server/diagnostic_server.dart';
   import 'package:analysis_server/src/services/correction/namespace.dart';
   import 'package:analysis_server/src/services/index/index.dart';
  
positive.code:                 analysisServer, path, result.lineInfo, sourceKind, unit);
            });
          }
        }
        // TODO(scheglov) Implement more notifications.
        // IMPLEMENTED
      });
      analysisDriver.exceptions.listen((nd.ExceptionResult result) {
        String message = 'Analysis failed: ${result.path}';
  
negative.code:     analysisServer.schedulePerformAnalysisOperation(context);
    }
  
    List<server.HighlightRegion> _computeHighlightRegions(CompilationUnit unit) {
      if (analysisServer.options.useAnalysisHighlight2) {
        return new DartUnitHighlightsComputer2(unit).compute();
      } else {
        return new DartUnitHighlightsComputer(unit).compute();
      }
    }
  
    String _computeLibraryName(CompilationUnit unit) {
      for (Directive directive in unit.directives) {
        if (directive is LibraryDirective && directive.name != null) {
          return directive.name.name;
        }
      }
      for (Directive directive in unit.directives) {
        if (directive is PartOfDirective && directive.libraryName != null) {
          return directive.libraryName.name;
        }
      }
      return null;
    }
  
    server.AnalysisNavigationParams _computeNavigationParams(
        String path, CompilationUnit unit) {
      NavigationCollectorImpl collector = new NavigationCollectorImpl();
      computeDartNavigation(collector, unit, null, null);
      collector.createRegions();
      return new server.AnalysisNavigationParams(
          path, collector.regions, collector.targets, collector.files);
    }
  
    List<Occurrences> _computeOccurrences(CompilationUnit unit) {
      OccurrencesCollectorImpl collector = new OccurrencesCollectorImpl();
      addDartOccurrences(collector, unit);
      return collector.allOccurrences;
    }
  
    server.AnalysisOutlineParams _computeOutlineParams(
        String path, CompilationUnit unit, LineInfo lineInfo) {
      // compute FileKind
      SourceKind sourceKind = unit.directives.any((d) => d is PartOfDirective)
          ? SourceKind.PART
          : SourceKind.LIBRARY;
      server.FileKind fileKind = server.FileKind.LIBRARY;
      if (sourceKind == SourceKind.LIBRARY) {
        fileKind = server.FileKind.LIBRARY;
      } else if (sourceKind == SourceKind.PART) {
        fileKind = server.FileKind.PART;
      }
      // compute library name
      String libraryName = _computeLibraryName(unit);
      // compute Outline
      DartUnitOutlineComputer computer =
          new DartUnitOutlineComputer(path, lineInfo, unit);
      server.Outline outline = computer.compute();
      return new server.AnalysisOutlineParams(path, fileKind, outline,
          libraryName: libraryName);
    }
  
    /**
     * Run [f] in a new [Future].
     *
  