| Index: pkg/analyzer/lib/src/task/driver.dart | 
| diff --git a/pkg/analyzer/lib/src/task/driver.dart b/pkg/analyzer/lib/src/task/driver.dart | 
| index ff5767db903edd1f5eabbf0ca856578b1fcb41a4..e4210d50ec5e88f9c0f2855d6ae038ba5b420627 100644 | 
| --- a/pkg/analyzer/lib/src/task/driver.dart | 
| +++ b/pkg/analyzer/lib/src/task/driver.dart | 
| @@ -9,7 +9,7 @@ import 'dart:collection'; | 
|  | 
| import 'package:analyzer/src/context/cache.dart'; | 
| import 'package:analyzer/src/generated/engine.dart' | 
| -    hide AnalysisTask, AnalysisContextImpl; | 
| +    hide AnalysisTask, AnalysisContextImpl, WorkManager; | 
| import 'package:analyzer/src/generated/java_engine.dart'; | 
| import 'package:analyzer/src/generated/resolver.dart'; | 
| import 'package:analyzer/src/generated/utilities_general.dart'; | 
| @@ -44,7 +44,8 @@ class AnalysisDriver { | 
| /** | 
| * The map of [ComputedResult] controllers. | 
| */ | 
| -  final Map<ResultDescriptor, StreamController<ComputedResult>> resultComputedControllers = | 
| +  final Map<ResultDescriptor, | 
| +          StreamController<ComputedResult>> resultComputedControllers = | 
| <ResultDescriptor, StreamController<ComputedResult>>{}; | 
|  | 
| /** | 
| @@ -197,8 +198,10 @@ class AnalysisDriver { | 
| * [descriptor] is computed. | 
| */ | 
| Stream<ComputedResult> onResultComputed(ResultDescriptor descriptor) { | 
| -    return resultComputedControllers.putIfAbsent(descriptor, () => | 
| -        new StreamController<ComputedResult>.broadcast(sync: true)).stream; | 
| +    return resultComputedControllers | 
| +        .putIfAbsent(descriptor, | 
| +            () => new StreamController<ComputedResult>.broadcast(sync: true)) | 
| +        .stream; | 
| } | 
|  | 
| /** | 
| @@ -476,8 +479,9 @@ class InfiniteTaskLoopException extends AnalysisException { | 
| * Initialize a newly created exception to represent a failed attempt to | 
| * perform the given [task] due to the given [dependencyCycle]. | 
| */ | 
| -  InfiniteTaskLoopException(AnalysisTask task, this.dependencyCycle) : super( | 
| -          'Infinite loop while performing task ${task.descriptor.name} for ${task.target}'); | 
| +  InfiniteTaskLoopException(AnalysisTask task, this.dependencyCycle) | 
| +      : super( | 
| +            'Infinite loop while performing task ${task.descriptor.name} for ${task.target}'); | 
| } | 
|  | 
| /** | 
| @@ -565,10 +569,10 @@ class WorkItem { | 
| * described by the given descriptor. | 
| */ | 
| WorkItem(this.context, this.target, this.descriptor, this.spawningResult) { | 
| -    AnalysisTarget actualTarget = identical( | 
| -            target, AnalysisContextTarget.request) | 
| -        ? new AnalysisContextTarget(context) | 
| -        : target; | 
| +    AnalysisTarget actualTarget = | 
| +        identical(target, AnalysisContextTarget.request) | 
| +            ? new AnalysisContextTarget(context) | 
| +            : target; | 
| Map<String, TaskInput> inputDescriptors = | 
| descriptor.createTaskInputs(actualTarget); | 
| builder = new TopLevelTaskInputBuilder(inputDescriptors); | 
| @@ -672,42 +676,6 @@ class WorkItem { | 
| } | 
|  | 
| /** | 
| - * [AnalysisDriver] uses [WorkManager]s to select results to compute. | 
| - * | 
| - * They know specific of the targets and results they care about, | 
| - * so they can request analysis results in optimal order. | 
| - */ | 
| -abstract class WorkManager { | 
| -  /** | 
| -   * Notifies the managers that the given set of priority [targets] was set. | 
| -   */ | 
| -  void applyPriorityTargets(List<AnalysisTarget> targets); | 
| - | 
| -  /** | 
| -   * Return the next [TargetedResult] that this work manager wants to be | 
| -   * computed, or `null` if this manager doesn't need any new results. | 
| -   */ | 
| -  TargetedResult getNextResult(); | 
| - | 
| -  /** | 
| -   * Return the priority if the next work order this work manager want to be | 
| -   * computed. The [AnalysisDriver] will perform the work order with | 
| -   * the highest priority. | 
| -   * | 
| -   * Even if the returned value is [WorkOrderPriority.NONE], it still does not | 
| -   * guarantee that [getNextResult] will return not `null`. | 
| -   */ | 
| -  WorkOrderPriority getNextResultPriority(); | 
| - | 
| -  /** | 
| -   * Notifies the manager that the given [outputs] were produced for | 
| -   * the given [target]. | 
| -   */ | 
| -  void resultsComputed( | 
| -      AnalysisTarget target, Map<ResultDescriptor, dynamic> outputs); | 
| -} | 
| - | 
| -/** | 
| * A description of the work to be done to compute a desired analysis result. | 
| * The class implements a lazy depth-first traversal of the work item's input. | 
| */ | 
| @@ -774,31 +742,6 @@ class WorkOrder implements Iterator<WorkItem> { | 
| } | 
|  | 
| /** | 
| - * The priorities of work orders returned by [WorkManager]s. | 
| - */ | 
| -enum WorkOrderPriority { | 
| -  /** | 
| -   * Responding to an user's action. | 
| -   */ | 
| -  INTERACTIVE, | 
| - | 
| -  /** | 
| -   * Computing information for priority sources. | 
| -   */ | 
| -  PRIORITY, | 
| - | 
| -  /** | 
| -   * A work should be done, but without any special urgency. | 
| -   */ | 
| -  NORMAL, | 
| - | 
| -  /** | 
| -   * Nothing to do. | 
| -   */ | 
| -  NONE | 
| -} | 
| - | 
| -/** | 
| * Specilaization of [CycleAwareDependencyWalker] for use by [WorkOrder]. | 
| */ | 
| class _WorkOrderDependencyWalker extends CycleAwareDependencyWalker<WorkItem> { | 
|  |