diff --git a/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart b/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart
index 83073d8..b6b3910 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart
@@ -6,6 +6,7 @@
 import 'package:analysis_server/src/services/correction/assist.dart';
 import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
 import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_core.dart';
 import 'package:analyzer_plugin/utilities/assist/assist.dart';
 import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
 import 'package:analyzer_plugin/utilities/range_factory.dart';
@@ -50,22 +51,34 @@
       return;
     }
 
-    await builder.addDartFileEdit(file, (builder) {
-      if (variableList.type == null) {
-        final type = variable.declaredElement!.type;
-        if (!type.isDynamic && keyword != null) {
-          builder.addReplacement(range.token(keyword), (builder) {
-            builder.writeType(type);
-          });
+    Future<bool> tryToApplyChange(ChangeBuilder builder) async {
+      var validChange = true;
+      await builder.addDartFileEdit(file, (builder) {
+        if (variableList.type == null) {
+          final type = variable.declaredElement!.type;
+          if (!type.isDynamic && keyword != null) {
+            builder.addReplacement(range.token(keyword), (builder) {
+              validChange = builder.writeType(type);
+            });
+          }
         }
-      }
 
-      var indent = utils.getNodePrefix(statement);
-      var name = variable.name.name;
-      builder.addSimpleInsertion(variable.name.end, ';' + eol + indent + name);
-    });
+        var indent = utils.getNodePrefix(statement);
+        var name = variable.name.name;
+        builder.addSimpleInsertion(
+            variable.name.end, ';' + eol + indent + name);
+      });
+      return validChange;
+    }
+
+    if (await tryToApplyChange(_temporaryBuilder(builder))) {
+      await tryToApplyChange(builder);
+    }
   }
 
+  ChangeBuilder _temporaryBuilder(ChangeBuilder builder) =>
+      ChangeBuilder(workspace: (builder as ChangeBuilderImpl).workspace);
+
   /// Return an instance of this class. Used as a tear-off in `AssistProcessor`.
   static SplitVariableDeclaration newInstance() => SplitVariableDeclaration();
 }
diff --git a/pkg/analysis_server/test/src/services/correction/assist/split_variable_declaration_test.dart b/pkg/analysis_server/test/src/services/correction/assist/split_variable_declaration_test.dart
index 255f6e5..cca64e3 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/split_variable_declaration_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/split_variable_declaration_test.dart
@@ -118,4 +118,22 @@
 }
 ''');
   }
+
+  Future<void> test_unknownType() async {
+    addSource('/home/test/lib/a.dart', '''
+class A {
+  _B b => _B();
+}
+class _B {}
+''');
+
+    await resolveTestCode('''
+import 'package:test/a.dart';
+
+f(A a) {
+  var x = a.b();
+}
+''');
+    await assertNoAssistAt('var ');
+  }
 }
diff --git a/tools/VERSION b/tools/VERSION
index adb1407..b02aaac 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 21
+PRERELEASE 22
 PRERELEASE_PATCH 0
\ No newline at end of file
