| Index: pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
 | 
| diff --git a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
 | 
| index eb4cbe864ec11615bdfca11f5dbc3f7699e2b8ec..4a7b792c20d44180e66bf41ceb9235fdec98d808 100644
 | 
| --- a/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
 | 
| +++ b/pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart
 | 
| @@ -13,17 +13,18 @@ import 'package:analysis_server/src/provisional/completion/dart/completion_dart.
 | 
|  import 'package:analysis_server/src/provisional/completion/dart/completion_plugin.dart';
 | 
|  import 'package:analysis_server/src/provisional/completion/dart/completion_target.dart';
 | 
|  import 'package:analysis_server/src/services/completion/completion_core.dart';
 | 
| +import 'package:analysis_server/src/services/completion/optype.dart';
 | 
|  import 'package:analysis_server/src/services/search/search_engine.dart';
 | 
| +import 'package:analyzer/dart/element/element.dart';
 | 
| +import 'package:analyzer/dart/element/type.dart';
 | 
|  import 'package:analyzer/file_system/file_system.dart';
 | 
|  import 'package:analyzer/src/context/context.dart'
 | 
|      show AnalysisFutureHelper, AnalysisContextImpl;
 | 
|  import 'package:analyzer/src/generated/ast.dart';
 | 
| -import 'package:analyzer/src/generated/element.dart';
 | 
|  import 'package:analyzer/src/generated/engine.dart' hide AnalysisContextImpl;
 | 
|  import 'package:analyzer/src/generated/source.dart';
 | 
|  import 'package:analyzer/src/task/dart.dart';
 | 
|  import 'package:analyzer/task/dart.dart';
 | 
| -import 'package:analysis_server/src/services/completion/optype.dart';
 | 
|  
 | 
|  /**
 | 
|   * [DartCompletionManager] determines if a completion request is Dart specific
 | 
| @@ -54,40 +55,20 @@ class DartCompletionManager implements CompletionContributor {
 | 
|  class DartCompletionRequestImpl extends CompletionRequestImpl
 | 
|      implements DartCompletionRequest {
 | 
|    /**
 | 
| -   * Return a [Future] that completes with a newly created completion request
 | 
| -   * based on the given [request].
 | 
| +   * The [DartType] for Object in dart:core
 | 
|     */
 | 
| -  static Future<DartCompletionRequest> from(CompletionRequest request) async {
 | 
| -    Source source = request.source;
 | 
| -    AnalysisContext context = request.context;
 | 
| -    CompilationUnit unit = request.context.computeResult(source, PARSED_UNIT);
 | 
| +  InterfaceType _objectType;
 | 
|  
 | 
| -    Source libSource;
 | 
| -    if (unit.directives.any((d) => d is PartOfDirective)) {
 | 
| -      List<Source> libraries = context.getLibrariesContaining(source);
 | 
| -      if (libraries.isNotEmpty) {
 | 
| -        libSource = libraries[0];
 | 
| -      }
 | 
| -    } else {
 | 
| -      libSource = source;
 | 
| -    }
 | 
| +  @override
 | 
| +  Expression dotTarget;
 | 
|  
 | 
| -    // Most (all?) contributors need declarations in scope to be resolved
 | 
| -    if (libSource != null) {
 | 
| -      unit = await new AnalysisFutureHelper<CompilationUnit>(context,
 | 
| -              new LibrarySpecificUnit(libSource, source), RESOLVED_UNIT3)
 | 
| -          .computeAsync();
 | 
| -    }
 | 
| +  @override
 | 
| +  Source librarySource;
 | 
|  
 | 
| -    return new DartCompletionRequestImpl._(
 | 
| -        request.context,
 | 
| -        request.resourceProvider,
 | 
| -        request.searchEngine,
 | 
| -        libSource,
 | 
| -        request.source,
 | 
| -        request.offset,
 | 
| -        unit);
 | 
| -  }
 | 
| +  OpType _opType;
 | 
| +
 | 
| +  @override
 | 
| +  CompletionTarget target;
 | 
|  
 | 
|    DartCompletionRequestImpl._(
 | 
|        AnalysisContext context,
 | 
| @@ -101,22 +82,6 @@ class DartCompletionRequestImpl extends CompletionRequestImpl
 | 
|      _updateTargets(unit);
 | 
|    }
 | 
|  
 | 
| -  /**
 | 
| -   * The [DartType] for Object in dart:core
 | 
| -   */
 | 
| -  InterfaceType _objectType;
 | 
| -
 | 
| -  @override
 | 
| -  Expression dotTarget;
 | 
| -
 | 
| -  @override
 | 
| -  Source librarySource;
 | 
| -
 | 
| -  OpType _opType;
 | 
| -
 | 
| -  @override
 | 
| -  CompletionTarget target;
 | 
| -
 | 
|    @override
 | 
|    bool get includeIdentifiers {
 | 
|      opType; // <<< ensure _opType is initialized
 | 
| @@ -150,7 +115,6 @@ class DartCompletionRequestImpl extends CompletionRequestImpl
 | 
|      return _objectType;
 | 
|    }
 | 
|  
 | 
| -  // For internal use only
 | 
|    OpType get opType {
 | 
|      if (_opType == null) {
 | 
|        _opType = new OpType.forCompletion(target, offset);
 | 
| @@ -158,6 +122,7 @@ class DartCompletionRequestImpl extends CompletionRequestImpl
 | 
|      return _opType;
 | 
|    }
 | 
|  
 | 
| +  // For internal use only
 | 
|    @override
 | 
|    Future<List<Directive>> resolveDirectives() async {
 | 
|      CompilationUnit libUnit;
 | 
| @@ -235,4 +200,40 @@ class DartCompletionRequestImpl extends CompletionRequestImpl
 | 
|        }
 | 
|      }
 | 
|    }
 | 
| +
 | 
| +  /**
 | 
| +   * Return a [Future] that completes with a newly created completion request
 | 
| +   * based on the given [request].
 | 
| +   */
 | 
| +  static Future<DartCompletionRequest> from(CompletionRequest request) async {
 | 
| +    Source source = request.source;
 | 
| +    AnalysisContext context = request.context;
 | 
| +    CompilationUnit unit = request.context.computeResult(source, PARSED_UNIT);
 | 
| +
 | 
| +    Source libSource;
 | 
| +    if (unit.directives.any((d) => d is PartOfDirective)) {
 | 
| +      List<Source> libraries = context.getLibrariesContaining(source);
 | 
| +      if (libraries.isNotEmpty) {
 | 
| +        libSource = libraries[0];
 | 
| +      }
 | 
| +    } else {
 | 
| +      libSource = source;
 | 
| +    }
 | 
| +
 | 
| +    // Most (all?) contributors need declarations in scope to be resolved
 | 
| +    if (libSource != null) {
 | 
| +      unit = await new AnalysisFutureHelper<CompilationUnit>(context,
 | 
| +              new LibrarySpecificUnit(libSource, source), RESOLVED_UNIT3)
 | 
| +          .computeAsync();
 | 
| +    }
 | 
| +
 | 
| +    return new DartCompletionRequestImpl._(
 | 
| +        request.context,
 | 
| +        request.resourceProvider,
 | 
| +        request.searchEngine,
 | 
| +        libSource,
 | 
| +        request.source,
 | 
| +        request.offset,
 | 
| +        unit);
 | 
| +  }
 | 
|  }
 | 
| 
 |