diff --git a/pkg/analysis_server/analyzer_use_new_elements.txt b/pkg/analysis_server/analyzer_use_new_elements.txt
index 57834b6..469a871 100644
--- a/pkg/analysis_server/analyzer_use_new_elements.txt
+++ b/pkg/analysis_server/analyzer_use_new_elements.txt
@@ -32,8 +32,5 @@
 test/plugin/protocol_dart_test.dart
 test/services/correction/status_test.dart
 test/services/refactoring/legacy/abstract_rename.dart
-test/services/refactoring/legacy/rename_class_member_test.dart
-test/services/refactoring/legacy/rename_constructor_test.dart
 test/services/refactoring/legacy/rename_import_test.dart
-test/services/refactoring/legacy/rename_library_test.dart
 test/services/search/element_visitors_test.dart
diff --git a/pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart b/pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart
index 829b05b..0ee171b8 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart
@@ -535,6 +535,18 @@
     return null;
   }
 
+  /// Returns a new [RenameRefactoring] instance for renaming the [element].
+  ///
+  /// Returns `null` if there is no support for renaming elements of the given
+  /// kind.
+  static RenameRefactoring? create2(
+    RefactoringWorkspace workspace,
+    ResolvedUnitResult resolvedUnit,
+    Element2? element,
+  ) {
+    return create(workspace, resolvedUnit, element.asElement);
+  }
+
   /// Given a node/element, finds the best element to rename (for example
   /// the class when on the `new` keyword).
   static RenameRefactoringElement? getElementToRename(
diff --git a/pkg/analysis_server/test/services/refactoring/legacy/abstract_rename.dart b/pkg/analysis_server/test/services/refactoring/legacy/abstract_rename.dart
index 7532878..10fac2c 100644
--- a/pkg/analysis_server/test/services/refactoring/legacy/abstract_rename.dart
+++ b/pkg/analysis_server/test/services/refactoring/legacy/abstract_rename.dart
@@ -6,6 +6,7 @@
 import 'package:analysis_server/src/services/refactoring/legacy/refactoring.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/element2.dart';
 import 'package:analyzer/src/dart/ast/element_locator.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Element;
 import 'package:test/test.dart';
@@ -63,6 +64,21 @@
     this.refactoring = refactoring;
   }
 
+  /// Creates a new [RenameRefactoring] in [refactoring] for [element].
+  /// Fails if no [RenameRefactoring] can be created.
+  void createRenameRefactoringForElement2(Element2? element) {
+    var workspace = RefactoringWorkspace([driverFor(testFile)], searchEngine);
+    var refactoring = RenameRefactoring.create2(
+      workspace,
+      testAnalysisResult,
+      element,
+    );
+    if (refactoring == null) {
+      fail("No refactoring for '$element'.");
+    }
+    this.refactoring = refactoring;
+  }
+
   /// Returns the [Edit] with the given [id], maybe `null`.
   SourceEdit findEditById(String id) {
     for (var fileEdit in refactoringChange.edits) {
diff --git a/pkg/analysis_server/test/services/refactoring/legacy/rename_class_member_test.dart b/pkg/analysis_server/test/services/refactoring/legacy/rename_class_member_test.dart
index 88f33b1..7e742cb 100644
--- a/pkg/analysis_server/test/services/refactoring/legacy/rename_class_member_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/legacy/rename_class_member_test.dart
@@ -1706,8 +1706,8 @@
 }
 ''');
     // configure refactoring
-    var element = findElement.field('field');
-    createRenameRefactoringForElement(element);
+    var element = findElement2.field('field');
+    createRenameRefactoringForElement2(element);
     expect(refactoring.refactoringName, 'Rename Field');
     expect(refactoring.oldName, 'field');
     refactoring.newName = '_field';
@@ -1736,8 +1736,8 @@
 }
 ''');
     // configure refactoring
-    var element = findElement.field('field');
-    createRenameRefactoringForElement(element);
+    var element = findElement2.field('field');
+    createRenameRefactoringForElement2(element);
     expect(refactoring.refactoringName, 'Rename Field');
     expect(refactoring.oldName, 'field');
     refactoring.newName = '_field';
diff --git a/pkg/analysis_server/test/services/refactoring/legacy/rename_constructor_test.dart b/pkg/analysis_server/test/services/refactoring/legacy/rename_constructor_test.dart
index bbb5de5..3a9e63e 100644
--- a/pkg/analysis_server/test/services/refactoring/legacy/rename_constructor_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/legacy/rename_constructor_test.dart
@@ -669,8 +669,8 @@
 
   void _createEnumConstantRefactoring(String search) {
     var enumConstant = findNode.enumConstantDeclaration(search);
-    var element = enumConstant.constructorElement;
-    createRenameRefactoringForElement(element);
+    var element = enumConstant.constructorElement2;
+    createRenameRefactoringForElement2(element);
   }
 }
 
@@ -937,13 +937,13 @@
 
 class _RenameConstructorTest extends RenameRefactoringTest {
   void _createConstructorDeclarationRefactoring(String search) {
-    var element = findNode.constructor(search).declaredElement;
-    createRenameRefactoringForElement(element);
+    var element = findNode.constructor(search).declaredFragment?.element;
+    createRenameRefactoringForElement2(element);
   }
 
   void _createConstructorInvocationRefactoring(String search) {
     var instanceCreation = findNode.instanceCreation(search);
-    var element = instanceCreation.constructorName.staticElement;
-    createRenameRefactoringForElement(element);
+    var element = instanceCreation.constructorName.element;
+    createRenameRefactoringForElement2(element);
   }
 }
diff --git a/pkg/analysis_server/test/services/refactoring/legacy/rename_library_test.dart b/pkg/analysis_server/test/services/refactoring/legacy/rename_library_test.dart
index 20f086b..d8c440b 100644
--- a/pkg/analysis_server/test/services/refactoring/legacy/rename_library_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/legacy/rename_library_test.dart
@@ -93,6 +93,6 @@
   }
 
   void _createRenameRefactoring() {
-    createRenameRefactoringForElement(testUnitElement.library);
+    createRenameRefactoringForElement2(testLibraryElement2);
   }
 }
