diff --git a/pkg/analysis_server/lib/src/domain_execution.dart b/pkg/analysis_server/lib/src/domain_execution.dart
index a1ed194..52bf9d6 100644
--- a/pkg/analysis_server/lib/src/domain_execution.dart
+++ b/pkg/analysis_server/lib/src/domain_execution.dart
@@ -9,7 +9,7 @@
 import 'package:analysis_server/protocol/protocol_constants.dart';
 import 'package:analysis_server/protocol/protocol_generated.dart';
 import 'package:analysis_server/src/analysis_server.dart';
-import 'package:analysis_server/src/domains/execution/completion.dart';
+import 'package:analysis_server/src/protocol_server.dart';
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/generated/source.dart';
@@ -63,25 +63,30 @@
    * Implement the 'execution.getSuggestions' request.
    */
   void getSuggestions(Request request) async {
-    // TODO(brianwilkerson) Determine whether this await is necessary.
-    await null;
-    var params = new ExecutionGetSuggestionsParams.fromRequest(request);
-    var computer = new RuntimeCompletionComputer(
-        server.resourceProvider,
-        server.fileContentOverlay,
-        server.getAnalysisDriver(params.contextFile),
-        params.code,
-        params.offset,
-        params.contextFile,
-        params.contextOffset,
-        params.variables,
-        params.expressions);
-    RuntimeCompletionResult completionResult = await computer.compute();
-
-    // Send the response.
+//    // TODO(brianwilkerson) Determine whether this await is necessary.
+//    await null;
+//    var params = new ExecutionGetSuggestionsParams.fromRequest(request);
+//    var computer = new RuntimeCompletionComputer(
+//        server.resourceProvider,
+//        server.fileContentOverlay,
+//        server.getAnalysisDriver(params.contextFile),
+//        params.code,
+//        params.offset,
+//        params.contextFile,
+//        params.contextOffset,
+//        params.variables,
+//        params.expressions);
+//    RuntimeCompletionResult completionResult = await computer.compute();
+//
+//    // Send the response.
+//    var result = new ExecutionGetSuggestionsResult(
+//        suggestions: completionResult.suggestions,
+//        expressions: completionResult.expressions);
+    // TODO(brianwilkerson) Re-enable this functionality after implementing a
+    // way of computing suggestions that is compatible with AnalysisSession.
     var result = new ExecutionGetSuggestionsResult(
-        suggestions: completionResult.suggestions,
-        expressions: completionResult.expressions);
+        suggestions: <CompletionSuggestion>[],
+        expressions: <RuntimeCompletionExpression>[]);
     server.sendResponse(result.toResponse(request.id));
   }
 
diff --git a/pkg/analysis_server/test/domain_execution_test.dart b/pkg/analysis_server/test/domain_execution_test.dart
index 1370637..9805a59 100644
--- a/pkg/analysis_server/test/domain_execution_test.dart
+++ b/pkg/analysis_server/test/domain_execution_test.dart
@@ -201,12 +201,16 @@
     Response response = await waitResponse(request);
 
     var result = new ExecutionGetSuggestionsResult.fromResponse(response);
-    expect(result.suggestions, isNotEmpty);
+//    expect(result.suggestions, isNotEmpty);
+//
+//    expect(
+//        result.suggestions,
+//        contains(
+//            predicate<CompletionSuggestion>((s) => s.completion == 'foo')));
 
-    expect(
-        result.suggestions,
-        contains(
-            predicate<CompletionSuggestion>((s) => s.completion == 'foo')));
+    // TODO(brianwilkerson) Restore the expectations above (and delete the line
+    // below) after the functionality has been re-enabled.
+    expect(result.suggestions, isEmpty);
   }
 
   void test_mapUri_file() {
