diff --git a/pkg/analysis_server/lib/src/lsp/handlers/commands/fix_all.dart b/pkg/analysis_server/lib/src/lsp/handlers/commands/fix_all.dart
index 784e2fe..4d4f523 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/commands/fix_all.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/commands/fix_all.dart
@@ -12,7 +12,6 @@
 import 'package:analysis_server/src/lsp/progress.dart';
 import 'package:analysis_server/src/services/correction/bulk_fix_processor.dart';
 import 'package:analysis_server/src/services/correction/change_workspace.dart';
-import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart';
 
 class FixAllCommandHandler extends SimpleEditCommandHandler {
   FixAllCommandHandler(LspAnalysisServer server) : super(server);
@@ -48,14 +47,13 @@
       final processor =
           BulkFixProcessor(server.instrumentationService, workspace);
 
-      final collection = AnalysisContextCollectionImpl(
-        includedPaths: [path],
-        resourceProvider: server.resourceProvider,
-        sdkPath: server.sdkManager.defaultSdkDirectory,
-      );
-      final changeBuilder = await processor.fixErrors(collection.contexts);
-      final change = changeBuilder.sourceChange;
+      final context = server.contextManager.getContextFor(path);
+      if (context == null) {
+        return success(null);
+      }
 
+      final changeBuilder = await processor.fixErrorsForFile(context, path);
+      final change = changeBuilder.sourceChange;
       if (change.edits.isEmpty) {
         return success(null);
       }
diff --git a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
index e2539fa..7313659 100644
--- a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
@@ -182,6 +182,22 @@
     return builder;
   }
 
+  /// Return a change builder that has been used to create fixes for the
+  /// diagnostics in [file] in the given [context].
+  Future<ChangeBuilder> fixErrorsForFile(
+      AnalysisContext context, String path) async {
+    var pathContext = context.contextRoot.resourceProvider.pathContext;
+
+    if (file_paths.isDart(pathContext, path) && !file_paths.isGenerated(path)) {
+      var library = await context.currentSession.getResolvedLibrary(path);
+      if (library is ResolvedLibraryResult) {
+        await _fixErrorsInLibrary(library);
+      }
+    }
+
+    return builder;
+  }
+
   /// Return a change builder that has been used to create all fixes for a
   /// specific diagnostic code in the given [unit].
   Future<ChangeBuilder> fixOfTypeInUnit(
diff --git a/pkg/vm/lib/transformations/ffi_native.dart b/pkg/vm/lib/transformations/ffi_native.dart
index ec120ac..7a85d36 100644
--- a/pkg/vm/lib/transformations/ffi_native.dart
+++ b/pkg/vm/lib/transformations/ffi_native.dart
@@ -143,7 +143,7 @@
     final callFuncPtrInvocation = FunctionInvocation(
         FunctionAccessKind.FunctionType,
         StaticGet(funcPtrField),
-        Arguments(params.map((p) => VariableGet(p)).toList()),
+        Arguments(params.map<Expression>((p) => VariableGet(p)).toList()),
         functionType: dartType as FunctionType);
 
     return ReturnStatement(callFuncPtrInvocation);
diff --git a/tools/VERSION b/tools/VERSION
index d31e737..f61b8cf 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 316
+PRERELEASE 317
 PRERELEASE_PATCH 0
\ No newline at end of file
