diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t01.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t01.dart
index 169e7e9..9d6312b 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t01.dart
@@ -19,15 +19,20 @@
 class A {}
 int called = 0;
 
-final Finalizer finalizer = Finalizer((token) {
-  Expect.isNull(token);
+final Finalizer finalizer = Finalizer((_) {
   called++;
 });
 
-main() {
+main() async {
   A a = A();
   finalizer.attach(A(), null);
   Expect.equals(0, called);
-  triggerGcWithDelay();
+  await triggerGcWithDelay();
+  Expect.equals(0, called);
+  await triggerGcWithDelay();
+  Expect.equals(0, called);
+  await triggerGcWithDelay();
+  Expect.equals(0, called);
+  await triggerGcWithDelay();
   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 05f6654..4046a2d 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t02.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t02.dart
@@ -23,8 +23,8 @@
   called++;
 });
 
-main() {
+main() async {
   finalizer.attach(Object(), "abc");
-  triggerGcWithDelay();       // Call FullGC 3 times
+  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 01ca35d..60a2625 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t03.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t03.dart
@@ -28,6 +28,6 @@
   finalizer.attach(obj, "Testme");
   print(obj);
   obj = null;
-  triggerGcWithDelay();       // Call FullGC 3 times
-  Expect.equals(1, called);   // Finalizer should be called only once
+  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 ad80fe6..a073f19 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t04.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/Finalizer_A01_t04.dart
@@ -17,21 +17,27 @@
 import '../../../../Utils/expect.dart';
 
 int called = 0;
+Object? liveObject;
 
 final Finalizer finalizer = Finalizer((token) {
   Expect.equals(123, token);
   called++;
 });
 
-test() {
-  Object obj = Object();
-  finalizer.attach(obj, 123);
-  triggerGcWithDelay();
+@pragma('vm:never-inline')
+test() async {
+  Object object = Object();
+  finalizer.attach(object, 123);
+  await triggerGcWithDelay();
   Expect.equals(0, called);
+  liveObject = object;
 }
 
-main() {
+main() async {
   test();
-  triggerGcWithDelay();     // Call FullGC 3 times
-  Expect.equals(1, called); // Finalizer should be called only once
+  await triggerGcWithDelay();
+  Expect.equals(0, called);
+  liveObject = null;
+  await triggerGcWithDelay();
+  Expect.equals(1, called);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t01.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t01.dart
index e994d67..e2333e7 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t01.dart
@@ -30,32 +30,31 @@
   cnt++;
 });
 
+@pragma('vm:never-inline')
+void test() {
+  Object? obj = Object();
+  finalizer.attach(obj, "Just a string");
+  print(obj);
+}
+
 main() async {
-  {
-    Object ? obj = Object();
-    finalizer.attach(obj, "Just a string");
-    print(obj);
-  }
+  test();
   await triggerGcWithDelay();
   Expect.equals("Just a string", returnedToken);
 
-  {
-    Object? obj = A();
-    finalizer.attach(obj, 15);
-    print(obj);
-    obj = null;
-    await triggerGcWithDelay();
-    Expect.equals(15, returnedToken);
-  }
+  Object? obj = A();
+  finalizer.attach(obj, 15);
+  print(obj);
+  obj = List.filled(100, 1);
+  await triggerGcWithDelay();
+  Expect.equals(15, returnedToken);
 
-  {
-    Object obj = List.filled(100, 1);
-    finalizer.attach(obj, []);
-    print(obj);
-    obj = A();
-    await triggerGcWithDelay();
-    Expect.equals([], returnedToken);
-  }
+  finalizer.attach(obj, []);
+  print(obj);
+  obj = A();
+  await triggerGcWithDelay();
+  Expect.equals([], returnedToken);
 
+  await triggerGcWithDelay();
   Expect.equals(3, cnt);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t02.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t02.dart
index 1f13edb..c67dd5c 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t02.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t02.dart
@@ -27,13 +27,20 @@
   cnt++;
 });
 
+@pragma('vm:never-inline')
+void test(token) {
+  Object value = Object();
+  finalizer.attach(value, "Finalization token", detach: token);
+}
+
 main() async {
   A detachToken = A();
-  {
-    Object value = Object();
-    finalizer.attach(value, "Finalization token", detach: detachToken);
-    finalizer.detach(detachToken);
-  }
+  test(detachToken);
+  finalizer.detach(detachToken);
+  await triggerGcWithDelay();
+  Expect.equals(0, cnt);
+  await triggerGcWithDelay();
+  Expect.equals(0, cnt);
   await triggerGcWithDelay();
   Expect.equals(0, cnt);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t03.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t03.dart
index 5f0f64f..c558066 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t03.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t03.dart
@@ -25,37 +25,40 @@
 Object? returnedToken;
 int cnt = 0;
 
+
 final Finalizer<int> finalizer = Finalizer((token) {
   returnedToken = token;
   cnt++;
 });
 
+@pragma('vm:never-inline')
+void test(int token) {
+  Object value = Object();
+  finalizer.attach(value, token);
+}
+
 main() async {
-  {
-    Object? obj = Object();
-    finalizer.attach(obj, 1);
-    print(obj);
-  }
+  test(1);
   await triggerGcWithDelay();
   Expect.equals(1, returnedToken);
 
-  {
-    Object? obj = A();
-    finalizer.attach(obj, 15);
-    print(obj);
-    obj = null;
-    await triggerGcWithDelay();
-    Expect.equals(15, returnedToken);
-  }
+  Object? obj = A();
+  finalizer.attach(obj, 15);
+  print(obj);
+  obj = List.filled(100, 1);
 
-  {
-    Object obj = List.filled(100, 1);
-    finalizer.attach(obj, 14);
-    print(obj);
-    obj = A();
-    await triggerGcWithDelay();
-    Expect.equals([], returnedToken);
-  }
+  await triggerGcWithDelay();
+  Expect.equals(15, returnedToken);
 
+  finalizer.attach(obj, 14);
+  print(obj);
+  obj = A();
+  await triggerGcWithDelay();
+  Expect.equals([], returnedToken);
+  Expect.equals(3, cnt);
+
+  await triggerGcWithDelay();
+  await triggerGcWithDelay();
+  await triggerGcWithDelay();
   Expect.equals(3, cnt);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t04.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t04.dart
index cd6e162..4a4f526 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t04.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A01_t04.dart
@@ -32,8 +32,9 @@
   {
     Object value = Object();
     finalizer.attach(value, "Finalization token", detach: detachToken);
-    finalizer.detach(detachToken);
+    value = Object();
   }
+  finalizer.detach(detachToken);
   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 27d3c64..db2e794 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A02_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A02_t01.dart
@@ -34,13 +34,8 @@
   Expect.isFalse(called);
   test(value);
 
-  Object value1 = value;
-  value = 12345;
-  await triggerGcWithDelay();
-  Expect.isFalse(called);
-
-  var value2 = test1(value1);
-  value1 = value;
+  var value2 = test1(value);
+  var value1 = value;
   await triggerGcWithDelay();
   Expect.isFalse(called);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A03_t01.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A03_t01.dart
index 1f10a54..af1f22e 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A03_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A03_t01.dart
@@ -19,10 +19,6 @@
   called++;
 });
 
-void test(Object o) {
-  triggerGcWithDelay();
-}
-
 Object test1(Object obj) => obj;
 
 main() async {
@@ -37,7 +33,6 @@
   // Initial object is not accessible anymore.
   // Do something, call triggerGC several times and check that callback was
   // not called during the execution.
-  test(value);
   await triggerGcWithDelay();
 
   var value1 = test1(value);
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t11.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t11.dart
new file mode 100644
index 0000000..1908a0c
--- /dev/null
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A04_t11.dart
@@ -0,0 +1,50 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+/// @assertion The value and detach arguments ... Both must be objects supported
+/// as an [Expando] key.
+///
+/// @description Checks that [value] must be supported as an [Expando] key.
+/// Test [Null]: it should not throw on a [null] detach argument, just treat it
+/// as having no detach object. Passing null is the same as not passing any
+/// argument. See Issue 48390 evaluation for more details.
+/// @author iarkh@unipro.ru
+/// @issue 48390
+
+import '../../../../Utils/expect.dart';
+import '../../gc_utils_lib.dart';
+
+
+final finalizerTokens = <Object>{};
+int cnt = 0;
+
+final Finalizer finalizer = Finalizer((token) {
+  finalizerTokens.add(token);
+  cnt++;
+});
+
+Object object1 = Object();
+Object object2 = Object();
+
+main() async {
+  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);
+}
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t01.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t01.dart
index c484b76..ceb9384 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t01.dart
@@ -5,7 +5,8 @@
 /// @assertion The [value] and [detach] arguments ... may be the same object.
 ///
 /// @description Checks that [value] and [detach] arguments can be the same
-/// object.
+/// object. If [value] is not a live object anymore and it was not detached,
+/// finalyzer can run.
 /// @author iarkh@unipro.ru
 
 import '../../gc_utils_lib.dart';
@@ -16,12 +17,20 @@
   called++;
 });
 
+
+@pragma('vm:never-inline')
+void test() {
+  Object obj = Object();
+  finalizer.attach(obj, "Just a string", detach: obj);
+  print(obj);
+}
+
 main() async {
-  {
-    Object value = Object();
-    finalizer.attach(value, "Finalization token", detach: value);
-    finalizer.detach(value);
-  }
+  test();
   await triggerGcWithDelay();
-  Expect.equals(0, called);
+  Expect.equals(1, called);
+  await triggerGcWithDelay();
+  Expect.equals(1, called);
+  await triggerGcWithDelay();
+  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 f42d405..022a97d 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t02.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A05_t02.dart
@@ -5,7 +5,7 @@
 /// @assertion The [value] and [detach] arguments ... may be the same object.
 ///
 /// @description Checks that [value] and [detach] arguments can be the same
-/// object.
+/// object. If object was detached, finalizer never starts.
 /// @author iarkh@unipro.ru
 
 import '../../gc_utils_lib.dart';
@@ -16,12 +16,20 @@
   called++;
 });
 
+@pragma('vm:never-inline')
+void test() {
+  Object obj = Object();
+  finalizer.attach(obj, "Just a string", detach: obj);
+  print(obj);
+  finalizer.detach(obj);
+}
+
 main() async {
-  Object value = Object();
-  finalizer.attach(value, "Finalization token", detach: value);
-  print(value);
-  finalizer.detach(value);
-  value = 12345;
+  test();
+  await triggerGcWithDelay();
+  Expect.equals(0, called);
+  await triggerGcWithDelay();
+  Expect.equals(0, called);
   await triggerGcWithDelay();
   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 9f11e22..8f96ac1 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t01.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t01.dart
@@ -23,16 +23,20 @@
   finalizerTokens.add(token);
 });
 
+@pragma('vm:never-inline')
+void test(Nonce token1, Nonce token2, Nonce 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);
+}
+
 main() async {
   Nonce token1 = Nonce(1);
   Nonce token2 = Nonce(2);
   Nonce token3 = Nonce(3);
-  {
-    Object value = Object();
-    finalizer.attach(value, "Finalization token", detach: token1);
-    finalizer.attach(value, "Finalization token", detach: token2);
-    finalizer.attach(value, "Finalization token", detach: token3);
-  }
+
+  test(token1, token2, token3);
 
   await triggerGcWithDelay();
   Expect.setEquals({token1, token2, token3}, finalizerTokens);
diff --git a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart
index 6a35c34..973c119 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t02.dart
@@ -18,20 +18,29 @@
 }
 
 final finalizerTokens = <Nonce>{};
+int cnt = 0;
 
 final Finalizer finalizer = Finalizer((token) {
+  cnt++;
   finalizerTokens.add(token);
 });
 
+@pragma('vm:never-inline')
+void test(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);
+}
+
 main() async {
   Nonce token = Nonce(1);
-  {
-    Object value = Object();
-    finalizer.attach(value, "Finalization token", detach: token);
-    finalizer.attach(value, "Finalization token", detach: token);
-    finalizer.attach(value, "Finalization token", detach: token);
-  }
-
+  test(token);
   await triggerGcWithDelay();
   Expect.setEquals({token}, finalizerTokens);
+  await triggerGcWithDelay();
+  Expect.setEquals({token}, finalizerTokens);
+  await triggerGcWithDelay();
+  Expect.setEquals({token}, 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 b7561b7..afeec7e 100644
--- a/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t03.dart
+++ b/LanguageFeatures/FinalizationRegistry/ffi/Finalizer/attach_A06_t03.dart
@@ -18,28 +18,38 @@
 }
 
 final finalizerTokens = <Nonce>{};
-
+int cnt = 0;
 final Finalizer finalizer = Finalizer((token) {
   finalizerTokens.add(token);
+  cnt++;
 });
 
+@pragma('vm:never-inline')
+void test(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);
+}
+
 main() async {
   Nonce token1 = Nonce(1);
   Nonce token2 = Nonce(2);
   Nonce token3 = Nonce(3);
-  {
-    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);
-  }
+
+  test(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);
+  Expect.equals(3, cnt);
 }
diff --git a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t11.dart b/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t11.dart
deleted file mode 100644
index f933f77..0000000
--- a/LanguageFeatures/FinalizationRegistry/no_ffi/Finalizer/attach_A04_t11.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/// @assertion The value and detach arguments ... Both must be objects supported
-/// as an [Expando] key.
-///
-/// @description Checks that [value] must be supported as an [Expando] key.
-/// Test [Null].
-/// @author iarkh@unipro.ru
-/// @issue 48390
-
-import '../../../../Utils/expect.dart';
-
-final Finalizer finalizer = Finalizer((_) { throw "Should not reach here"; });
-Object object = Object();
-
-main() {
-  Expect.throws(() {
-    finalizer.attach(object, "Finalization token", detach: null);
-  });
-
-  dynamic d = null;
-  Expect.throws(() {
-    finalizer.attach(object, "Finalization token", detach: d);
-  });
-}
