diff --git a/pkg/analyzer/test/src/dart/resolution/assignment_test.dart b/pkg/analyzer/test/src/dart/resolution/assignment_test.dart
index ac8c980..4d61216 100644
--- a/pkg/analyzer/test/src/dart/resolution/assignment_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/assignment_test.dart
@@ -2834,12 +2834,6 @@
   staticElement: dart:core::@class::num::@method::+
   staticType: int
 ''');
-
-    assertSimpleIdentifierAssignmentTarget(
-      assignment.leftHandSide,
-    );
-
-    assertType(assignment.rightHandSide, 'int');
   }
 
   test_simpleIdentifier_topLevelVariable_simple() async {
diff --git a/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
index e1e22db..c4ef684 100644
--- a/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/postfix_expression_test.dart
@@ -710,10 +710,6 @@
   staticType: dynamic
 ''');
     }
-
-    assertSimpleIdentifierAssignmentTarget(
-      node.operand,
-    );
   }
 
   test_inc_prefixedIdentifier_instance() async {
@@ -1229,10 +1225,6 @@
   staticType: int*
 ''');
     }
-
-    assertSimpleIdentifierAssignmentTarget(
-      node.operand,
-    );
   }
 
   test_inc_simpleIdentifier_topGetter_topSetter() async {
@@ -1280,10 +1272,6 @@
   staticType: int*
 ''');
     }
-
-    assertSimpleIdentifierAssignmentTarget(
-      node.operand,
-    );
   }
 
   test_inc_simpleIdentifier_topGetter_topSetter_fromClass() async {
@@ -1333,10 +1321,6 @@
   staticType: int*
 ''');
     }
-
-    assertSimpleIdentifierAssignmentTarget(
-      node.operand,
-    );
   }
 }
 
diff --git a/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart b/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart
index 4421bb0..c04f8a3 100644
--- a/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/prefix_expression_test.dart
@@ -1192,10 +1192,6 @@
   staticType: int*
 ''');
     }
-
-    assertSimpleIdentifierAssignmentTarget(
-      node.operand,
-    );
   }
 
   test_plusPlus_simpleIdentifier_thisGetter_thisSetter() async {
@@ -1243,10 +1239,6 @@
   staticType: int*
 ''');
     }
-
-    assertSimpleIdentifierAssignmentTarget(
-      node.operand,
-    );
   }
 
   test_plusPlus_simpleIdentifier_topGetter_topSetter() async {
@@ -1294,10 +1286,6 @@
   staticType: int*
 ''');
     }
-
-    assertSimpleIdentifierAssignmentTarget(
-      node.operand,
-    );
   }
 
   test_plusPlus_simpleIdentifier_topGetter_topSetter_fromClass() async {
@@ -1347,10 +1335,6 @@
   staticType: int*
 ''');
     }
-
-    assertSimpleIdentifierAssignmentTarget(
-      node.operand,
-    );
   }
 
   /// Verify that we get all necessary types when building the dependencies
diff --git a/pkg/analyzer/test/src/dart/resolution/resolution.dart b/pkg/analyzer/test/src/dart/resolution/resolution.dart
index 51a5dd8..b6d8a5b 100644
--- a/pkg/analyzer/test/src/dart/resolution/resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/resolution.dart
@@ -513,18 +513,6 @@
     assertType(node, type);
   }
 
-  /// TODO(scheglov) https://github.com/dart-lang/sdk/issues/43608
-  void assertSimpleIdentifierAssignmentTarget(Expression node) {
-    if (node is! SimpleIdentifier) {
-      _failNotSimpleIdentifier(node);
-    }
-
-    // TODO(scheglov) Enforce maybe?
-    // Currently VariableResolverVisitor sets it.
-    // expect(node.staticElement, isNull);
-    expect(node.staticType, isNull);
-  }
-
   void assertSubstitution(
     MapSubstitution substitution,
     Map<String, String> expected,
diff --git a/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart b/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
index 1785fe3..d78fa8a 100644
--- a/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/receiver_of_type_never_test.dart
@@ -703,10 +703,6 @@
       error(HintCode.DEAD_CODE, 29, 2),
     ]);
 
-    assertSimpleIdentifierAssignmentTarget(
-      findNode.simple('foo'),
-    );
-
     var assignment = findNode.assignment('foo += 0');
     assertResolvedNodeText(assignment, r'''
 AssignmentExpression
@@ -758,10 +754,6 @@
       error(HintCode.DEAD_CODE, 28, 2),
     ]);
 
-    assertSimpleIdentifierAssignmentTarget(
-      findNode.simple('foo'),
-    );
-
     var assignment = findNode.assignment('foo = 0');
     assertResolvedNodeText(assignment, r'''
 AssignmentExpression
diff --git a/pkg/dartdev/test/utils.dart b/pkg/dartdev/test/utils.dart
index e77686f..f159c9b 100644
--- a/pkg/dartdev/test/utils.dart
+++ b/pkg/dartdev/test/utils.dart
@@ -109,11 +109,15 @@
     await _process?.exitCode;
     _process = null;
     int deleteAttempts = 5;
-    while (dir.existsSync()) {
+    while (deleteAttempts >= 0) {
+      deleteAttempts--;
       try {
+        if (!dir.existsSync()) {
+          return;
+        }
         dir.deleteSync(recursive: true);
       } catch (e) {
-        if ((--deleteAttempts) <= 0) {
+        if (deleteAttempts <= 0) {
           rethrow;
         }
         await Future.delayed(Duration(milliseconds: 500));
diff --git a/tools/VERSION b/tools/VERSION
index cb08dfb..c8e491d 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 75
+PRERELEASE 76
 PRERELEASE_PATCH 0
\ No newline at end of file
