Fixes dart-lang/sdk#48412. Different issues fixed in Finalizer tests
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t01.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t01.dart
index 9d6312b..04de11f 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t01.dart
@@ -25,14 +25,8 @@
 
 main() async {
   A a = A();
-  finalizer.attach(A(), null);
+  finalizer.attach(a, null);
   Expect.equals(0, called);
-  await triggerGcWithDelay();
-  Expect.equals(0, called);
-  await triggerGcWithDelay();
-  Expect.equals(0, called);
-  await triggerGcWithDelay();
-  Expect.equals(0, called);
-  await triggerGcWithDelay();
+  await triggerGcWithDelay(repeat: 5);
   Expect.equals(0, called);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t02.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t02.dart
index 4046a2d..98b13b1 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t02.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t02.dart
@@ -23,8 +23,13 @@
   called++;
 });
 
-main() async {
+@pragma('vm:never-inline')
+void attachToFinalizer() {
   finalizer.attach(Object(), "abc");
+}
+
+main() async {
+  attachToFinalizer();
   await triggerGcWithDelay(); // Call FullGC
   Expect.equals(1, called);   // Callback function should be called only once
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t03.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t03.dart
index 60a2625..fb14bc8 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t03.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t03.dart
@@ -23,11 +23,14 @@
   called++;
 });
 
-main() {
+@pragma('vm:never-inline')
+void attachToFinalizer() {
   Object? obj = Object();
   finalizer.attach(obj, "Testme");
-  print(obj);
-  obj = null;
+}
+
+main() {
+  attachToFinalizer();
   triggerGcWithDelay();
   Expect.equals(1, called);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t04.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t04.dart
index a073f19..5ca418e 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t04.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t04.dart
@@ -17,7 +17,7 @@
 import '../../../../Utils/expect.dart';
 
 int called = 0;
-Object? liveObject;
+
 
 final Finalizer finalizer = Finalizer((token) {
   Expect.equals(123, token);
@@ -25,19 +25,24 @@
 });
 
 @pragma('vm:never-inline')
-test() async {
+attachToFinalizer() async {
+  Object? liveObject;
   Object object = Object();
   finalizer.attach(object, 123);
   await triggerGcWithDelay();
   Expect.equals(0, called);
   liveObject = object;
+  () async {
+    await triggerGcWithDelay();
+    Expect.equals(0, called);
+  }();
+  print(liveObject);
 }
 
 main() async {
-  test();
+  attachToFinalizer();
   await triggerGcWithDelay();
-  Expect.equals(0, called);
-  liveObject = null;
+  Expect.equals(1, called);
   await triggerGcWithDelay();
   Expect.equals(1, called);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t03.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t03.dart
index 3ab993d..3564b93 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t03.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t03.dart
@@ -53,7 +53,6 @@
   attachToFinalizer2();
   await triggerGcWithDelay();
   Expect.equals(15, returnedToken);
-
   await triggerGcWithDelay();
   Expect.equals(15, returnedToken);
 
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t04.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t04.dart
index 4a4f526..27851d2 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t04.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t04.dart
@@ -27,14 +27,16 @@
   cnt++;
 });
 
-main() async {
+@pragma('vm:never-inline')
+void attachAndDetach() {
   A detachToken = A();
-  {
-    Object value = Object();
-    finalizer.attach(value, "Finalization token", detach: detachToken);
-    value = Object();
-  }
+  Object value = Object();
+  finalizer.attach(value, "Finalization token", detach: detachToken);
   finalizer.detach(detachToken);
+}
+
+main() async {
+  attachAndDetach();
   await triggerGcWithDelay();
   Expect.equals(0, cnt);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A02_t01.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A02_t01.dart
index db2e794..8b718f4 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A02_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A02_t01.dart
@@ -18,12 +18,12 @@
   called = true;
 });
 
-void test(Object o) async {
+void _trigger(Object o) async {
   await triggerGcWithDelay();
   Expect.isFalse(called);
 }
 
-Object test1(Object obj) => obj;
+Object foo(Object obj) => obj;
 
 main() async {
   Object value = Object();
@@ -32,10 +32,12 @@
   Expect.isFalse(called);
   await triggerGcWithDelay();
   Expect.isFalse(called);
-  test(value);
+  _trigger(value);
 
-  var value2 = test1(value);
+  var value2 = foo(value);
   var value1 = value;
+  print(value1);
+  print(value2);
   await triggerGcWithDelay();
   Expect.isFalse(called);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A02_t02.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A02_t02.dart
index afe4bff..663bf64 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A02_t02.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A02_t02.dart
@@ -18,25 +18,14 @@
   called++;
 });
 
-void test(Object o) {
-  triggerGc();
+@pragma('vm:never-inline')
+void attachToFinalizer() {
+  var o = Object();
+  finalizer.attach(o, "Finalization token");
 }
 
-Object test1(Object obj) => obj;
-
 main() async {
-  Object value = Object();
-  finalizer.attach(value, "Finalization token");
-
-  value = 12345;
-
-  // Initial object is not accessible anymore.
-  // Do something, call triggerGC several times and check that callback was
-  // called only once during the execution.
-  test(value);
   await triggerGcWithDelay();
-
-  var value1 = test1(value);
   await triggerGcWithDelay();
   triggerGc();
   await triggerGcWithDelay();
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A03_t01.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A03_t01.dart
index af1f22e..8c86bf9 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A03_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A03_t01.dart
@@ -19,27 +19,23 @@
   called++;
 });
 
-Object test1(Object obj) => obj;
+@pragma('vm:never-inline')
+void attachAndDetach() {
+  A detachToken = A();
+  Object value = Object();
+  finalizer.attach(value, "Finalization token", detach: detachToken);
+  finalizer.detach(detachToken);
+}
 
 main() async {
-  Object value = Object();
-  Object detachToken = A();
-  finalizer.attach(value, "Finalization token", detach: detachToken);
-  print(value);
-  finalizer.detach(detachToken);
+  attachAndDetach();
 
-  value = 12345;
-
-  // Initial object is not accessible anymore.
-  // Do something, call triggerGC several times and check that callback was
-  // not called during the execution.
   await triggerGcWithDelay();
-
-  var value1 = test1(value);
   triggerGc();
   await triggerGcWithDelay();
   triggerGcWithDelay();
   triggerGcWithDelay();
+  await Future.delayed(Duration(milliseconds: 10));
 
   Expect.equals(0, called);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t11.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t11.dart
index 1908a0c..bb55874 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t11.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t11.dart
@@ -15,7 +15,6 @@
 import '../../../../Utils/expect.dart';
 import '../../gc_utils_lib.dart';
 
-
 final finalizerTokens = <Object>{};
 int cnt = 0;
 
@@ -24,27 +23,20 @@
   cnt++;
 });
 
-Object object1 = Object();
-Object object2 = Object();
-
-main() async {
+@pragma('vm:never-inline')
+void attachToFinalizer1() {
+  Object object1 = Object();
+  Object object2 = Object();
   finalizer.attach(object1, "Object1", detach: null);
-
   dynamic d = null;
   finalizer.attach(object2, "Object2", detach: d);
+}
 
-  object1 = "Object is free";
-  object2 = "Finalizer can be called";
 
-  await triggerGcWithDelay();
-  Expect.setEquals({"Object1", "Object2"}, finalizerTokens);
-  Expect.equals(2, cnt);
-
-  await triggerGcWithDelay();
-  Expect.setEquals({"Object1", "Object2"}, finalizerTokens);
-  Expect.equals(2, cnt);
-
-  await triggerGcWithDelay();
-  Expect.setEquals({"Object1", "Object2"}, finalizerTokens);
-  Expect.equals(2, cnt);
+main() async {
+  for (int i = 0; i < 10; i++) {
+    await triggerGcWithDelay();
+    Expect.setEquals({"Object1", "Object2"}, finalizerTokens);
+    Expect.equals(2, cnt);
+  }
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t12.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t12.dart
index 1f2f9ed..d207526 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t12.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t12.dart
@@ -34,5 +34,4 @@
   } finally {
     calloc.free(p2);
   }
-
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t13.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t13.dart
index ff67f69..cd34349 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t13.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t13.dart
@@ -26,7 +26,7 @@
   try {
     S s = p.ref;
     Expect.throws(() {
-      finalizer.attach(object, "Finalization token", detach: p);
+      finalizer.attach(object, "Finalization token", detach: s);
     });
   } finally {
     calloc.free(p);
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t01.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t01.dart
index ceb9384..4a18554 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t01.dart
@@ -17,20 +17,14 @@
   called++;
 });
 
-
 @pragma('vm:never-inline')
-void test() {
+void attachToFinalizer() {
   Object obj = Object();
   finalizer.attach(obj, "Just a string", detach: obj);
-  print(obj);
 }
 
 main() async {
-  test();
-  await triggerGcWithDelay();
-  Expect.equals(1, called);
-  await triggerGcWithDelay();
-  Expect.equals(1, called);
-  await triggerGcWithDelay();
+  attachToFinalizer();
+  await triggerGcWithDelay(repeat: 3);
   Expect.equals(1, called);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t02.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t02.dart
index 022a97d..ef2efc9 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t02.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t02.dart
@@ -17,19 +17,14 @@
 });
 
 @pragma('vm:never-inline')
-void test() {
+void attachAndDetach() {
   Object obj = Object();
   finalizer.attach(obj, "Just a string", detach: obj);
-  print(obj);
   finalizer.detach(obj);
 }
 
 main() async {
-  test();
-  await triggerGcWithDelay();
-  Expect.equals(0, called);
-  await triggerGcWithDelay();
-  Expect.equals(0, called);
-  await triggerGcWithDelay();
+  attachAndDetach();
+  await triggerGcWithDelay(repeat: 3);
   Expect.equals(0, called);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t01.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t01.dart
index 8f96ac1..9055584 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t01.dart
@@ -17,14 +17,14 @@
   Nonce(this.value);
 }
 
-final finalizerTokens = <Nonce>{};
+final finalizerTokens = <String>{};
 
 final Finalizer finalizer = Finalizer((token) {
   finalizerTokens.add(token);
 });
 
 @pragma('vm:never-inline')
-void test(Nonce token1, Nonce token2, Nonce token3) {
+void attachToFinalizer(Nonce token1, Nonce token2, Nonce token3) {
   Object value = Object();
   finalizer.attach(value, "Finalization token", detach: token1);
   finalizer.attach(value, "Finalization token", detach: token2);
@@ -32,12 +32,8 @@
 }
 
 main() async {
-  Nonce token1 = Nonce(1);
-  Nonce token2 = Nonce(2);
-  Nonce token3 = Nonce(3);
-
-  test(token1, token2, token3);
+  attachToFinalizer(Nonce(1), Nonce(2), Nonce(3));
 
   await triggerGcWithDelay();
-  Expect.setEquals({token1, token2, token3}, finalizerTokens);
+  Expect.setEquals({"Finalization token"}, finalizerTokens);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart
index 973c119..ef7e187 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart
@@ -17,7 +17,7 @@
   Nonce(this.value);
 }
 
-final finalizerTokens = <Nonce>{};
+final finalizerTokens = <String>{};
 int cnt = 0;
 
 final Finalizer finalizer = Finalizer((token) {
@@ -26,21 +26,23 @@
 });
 
 @pragma('vm:never-inline')
-void test(Nonce token) {
+void attachToFinalizer(Nonce token) {
   Object value = Object();
-  finalizer.attach(value, "Finalization token", detach: token);
-  finalizer.attach(value, "Finalization token", detach: token);
-  finalizer.attach(value, "Finalization token", detach: token);
+  finalizer.attach(value, "Finalization token 1", detach: token);
+  finalizer.attach(value, "Finalization token 2", detach: token);
+  finalizer.attach(value, "Finalization token 3", detach: token);
 }
 
 main() async {
   Nonce token = Nonce(1);
-  test(token);
-  await triggerGcWithDelay();
-  Expect.setEquals({token}, finalizerTokens);
-  await triggerGcWithDelay();
-  Expect.setEquals({token}, finalizerTokens);
-  await triggerGcWithDelay();
-  Expect.setEquals({token}, finalizerTokens);
+  attachToFinalizer(token);
+  for (int i = 0; i < 5; i++) {
+    await triggerGcWithDelay();
+    Expect.setEquals({
+      "Finalization token 1",
+      "Finalization token 2",
+      "Finalization token 3"
+    }, finalizerTokens);
+  }
   Expect.equals(1, cnt);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t03.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t03.dart
index afeec7e..0d1da1c 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t03.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t03.dart
@@ -17,7 +17,7 @@
   Nonce(this.value);
 }
 
-final finalizerTokens = <Nonce>{};
+final finalizerTokens = <String>{};
 int cnt = 0;
 final Finalizer finalizer = Finalizer((token) {
   finalizerTokens.add(token);
@@ -25,17 +25,17 @@
 });
 
 @pragma('vm:never-inline')
-void test(Nonce token1, token2, token3) {
+void attachToFinalizer(Nonce token1, token2, token3) {
   Object value = Object();
-  finalizer.attach(value, "Finalization token", detach: token1);
-  finalizer.attach(value, "Finalization token", detach: token2);
-  finalizer.attach(value, "Finalization token", detach: token3);
-  finalizer.attach(value, "Finalization token", detach: token1);
-  finalizer.attach(value, "Finalization token", detach: token2);
-  finalizer.attach(value, "Finalization token", detach: token3);
-  finalizer.attach(value, "Finalization token", detach: token1);
-  finalizer.attach(value, "Finalization token", detach: token2);
-  finalizer.attach(value, "Finalization token", detach: token3);
+  finalizer.attach(value, "Token 1", detach: token1);
+  finalizer.attach(value, "Token 2", detach: token2);
+  finalizer.attach(value, "Token 3", detach: token3);
+  finalizer.attach(value, "Token 1", detach: token1);
+  finalizer.attach(value, "Token 2", detach: token2);
+  finalizer.attach(value, "Token 3", detach: token3);
+  finalizer.attach(value, "Token 1", detach: token1);
+  finalizer.attach(value, "Token 2", detach: token2);
+  finalizer.attach(value, "Token 3", detach: token3);
 }
 
 main() async {
@@ -43,13 +43,9 @@
   Nonce token2 = Nonce(2);
   Nonce token3 = Nonce(3);
 
-  test(token1, token2, token3);
+  attachToFinalizer(token1, token2, token3);
 
-  await triggerGcWithDelay();
-  Expect.setEquals({token1, token2, token3}, finalizerTokens);
-  await triggerGcWithDelay();
-  Expect.setEquals({token1, token2, token3}, finalizerTokens);
-  await triggerGcWithDelay();
-  Expect.setEquals({token1, token2, token3}, finalizerTokens);
+  await triggerGcWithDelay(repeat: 3);
+  Expect.setEquals({"Token 1", "Token 2", "Token 3"}, finalizerTokens);
   Expect.equals(3, cnt);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t01.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t01.dart
index b1a0744..08fa351 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t01.dart
@@ -11,7 +11,7 @@
 /// calling [attach] with the [detachToken] object as [detach] argument, is
 /// removed.
 ///
-/// @description Checks that all attacments for the given token get removed
+/// @description Checks that all attachments for the given token get removed
 /// after the [detach] call.
 /// @author iarkh@unipro.ru
 
@@ -23,14 +23,14 @@
   Nonce(this.value);
 }
 
-final finalizerTokens = <Nonce>{};
+final finalizerTokens = <String>{};
 
 final Finalizer finalizer = Finalizer((token) {
   finalizerTokens.add(token);
 });
 
 @pragma('vm:never-inline')
-void test() {
+void attachAndDetach() {
   Object    object1 = Object();
   Object    object2 = Object();
   List<int> object3 = List.filled(100, 1);
@@ -48,7 +48,7 @@
 }
 
 main() async {
-  test();
+  attachAndDetach();
   await triggerGcWithDelay();
   Expect.setEquals({}, finalizerTokens);
   await triggerGcWithDelay();
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t02.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t02.dart
index 3e630f0..2db2354 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t02.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t02.dart
@@ -23,37 +23,37 @@
   Nonce(this.value);
 }
 
-final finalizerTokens = <Nonce>{};
+final finalizerTokens = <String>{};
 
 final Finalizer finalizer = Finalizer((token) {
   finalizerTokens.add(token);
 });
 
 @pragma('vm:never-inline')
-void test() {
+void attachAndDetach() {
   Object    object1 = Object();
   Object    object2 = Object();
   List<int> object3 = List.filled(100, 1);
   List      object4 = List.filled(200, "abc");
   Nonce     object5 = Nonce(14);
 
-  Object finalizationToken1 = Nonce(1);
-  Object finalizationToken2 = Nonce(2);
+  Object detachToken1 = Nonce(1);
+  Object detachToken2 = Nonce(2);
 
-  finalizer.attach(object1, "object1", detach: finalizationToken1);
-  finalizer.attach(object2, "object2", detach: finalizationToken2);
-  finalizer.attach(object3, "object3", detach: finalizationToken1);
-  finalizer.attach(object4, "object4", detach: finalizationToken1);
-  finalizer.attach(object5, "object5", detach: finalizationToken2);
-  finalizer.detach(finalizationToken1);
+  finalizer.attach(object1, "object1", detach: detachToken1);
+  finalizer.attach(object2, "object2", detach: detachToken2);
+  finalizer.attach(object3, "object3", detach: detachToken1);
+  finalizer.attach(object4, "object4", detach: detachToken1);
+  finalizer.attach(object5, "object5", detach: detachToken2);
+  finalizer.detach(detachToken1);
 }
 
 main() async {
-  test();
+  attachAndDetach();
   await triggerGcWithDelay();
-  Expect.setEquals({"Object2", "Object5"}, finalizerTokens);
+  Expect.setEquals({"object2", "object5"}, finalizerTokens);
   await triggerGcWithDelay();
-  Expect.setEquals({"Object2", "Object5"}, finalizerTokens);
+  Expect.setEquals({"object2", "object5"}, finalizerTokens);
   await triggerGcWithDelay();
-  Expect.setEquals({"Object2", "Object5"}, finalizerTokens);
+  Expect.setEquals({"object2", "object5"}, finalizerTokens);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t03.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t03.dart
index 43bdf80..fa17fdd 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t03.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/detach_A01_t03.dart
@@ -23,38 +23,33 @@
   Nonce(this.value);
 }
 
-final finalizerTokens = <Nonce>{};
+final finalizerTokens = <String>{};
 
 final Finalizer finalizer = Finalizer((token) {
   finalizerTokens.add(token);
 });
 
 @pragma('vm:never-inline')
-void test() {
+void attachAndDetach() {
   Object    object1 = Object();
   Object    object2 = Object();
   List<int> object3 = List.filled(100, 1);
   List      object4 = List.filled(200, "abc");
   Nonce     object5 = Nonce(14);
 
-  Object finalizationToken1 = Nonce(1);
-  Object finalizationToken2 = Nonce(2);
+  Object detachToken = Nonce(2);
 
   finalizer.attach(object1, "object1");
-  finalizer.attach(object2, "object2", detach: finalizationToken2);
+  finalizer.attach(object2, "object2", detach: detachToken);
   finalizer.attach(object3, "object3");
   finalizer.attach(object4, "object4");
-  finalizer.attach(object5, "object5", detach: finalizationToken2);
-  finalizer.detach(finalizationToken2);
+  finalizer.attach(object5, "object5", detach: detachToken);
+  finalizer.detach(detachToken);
 }
 
 main() async {
-  test();
-  await triggerGcWithDelay();
-  Expect.setEquals({"Object1", "Object3", "Object4"}, finalizerTokens);
-  await triggerGcWithDelay();
-  Expect.setEquals({"Object1", "Object3", "Object4"}, finalizerTokens);
-  await triggerGcWithDelay();
-  Expect.setEquals({"Object1", "Object3", "Object4"}, finalizerTokens);
+  attachAndDetach();
+  await triggerGcWithDelay(repeat: 3);
+  Expect.setEquals({"object1", "object3", "object4"}, finalizerTokens);
 }
 
diff --git a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t01.dart b/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t01.dart
index 85d349f..5213719 100644
--- a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t01.dart
@@ -21,11 +21,11 @@
 
   String s = "Just a string";
   Expect.throws(() {
-    finalizer.attach("Shouldn't work", "Finalization token");
+    finalizer.attach(s, "Finalization token");
   });
 
   dynamic d = s;
   Expect.throws(() {
-    finalizer.attach("Shouldn't work", "Finalization token");
+    finalizer.attach(d, "Finalization token");
   });
 }
diff --git a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t02.dart b/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t02.dart
index a98c333..2032e46 100644
--- a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t02.dart
+++ b/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t02.dart
@@ -12,9 +12,9 @@
 import '../../../../Utils/expect.dart';
 
 final Finalizer finalizer = Finalizer((_) { throw "Should not reach here"; });
-Object detachToken = Object;
 
 main() {
+  Object detachToken = Object();
   Expect.throws(() {
     finalizer.attach(12345, "Finalization token", detach: detachToken);
   });
diff --git a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t03.dart b/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t03.dart
index e7b45aa..b79426a 100644
--- a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t03.dart
+++ b/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t03.dart
@@ -12,9 +12,9 @@
 import '../../../../Utils/expect.dart';
 
 final Finalizer finalizer = Finalizer((_) { throw "Should not reach here"; });
-Object detachToken = Object;
 
 main() {
+  Object detachToken = Object();
   Expect.throws(() {
     finalizer.attach(true, "Finalization token", detach: detachToken);
   });
diff --git a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t08.dart b/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t08.dart
index 64940f5..7e44ff9 100644
--- a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t08.dart
+++ b/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t08.dart
@@ -12,9 +12,9 @@
 import "../../../../Utils/expect.dart";
 
 final Finalizer finalizer = Finalizer((_) { throw "Should not reach here"; });
-Object object = Object();
 
 main() {
+  final object = Object();
   Expect.throws(() {
     finalizer.attach(object, "Finalization token", detach: "detachMe");
   });
diff --git a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t10.dart b/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t10.dart
index 863a5c7..e4265c7 100644
--- a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t10.dart
+++ b/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t10.dart
@@ -12,9 +12,9 @@
 import '../../../../Utils/expect.dart';
 
 final Finalizer finalizer = Finalizer((_) { throw "Should not reach here"; });
-Object object = Object();
 
 main() {
+  final object = Object();
   Expect.throws(() {
     finalizer.attach(object, "Finalization token", detach: true);
   });