diff --git a/LanguageFeatures/nnbd/Null_promotion_A01_t03.dart b/LanguageFeatures/nnbd/Null_promotion_A01_t03.dart
deleted file mode 100644
index cda52f2..0000000
--- a/LanguageFeatures/nnbd/Null_promotion_A01_t03.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2019, 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 A check of the form [e == null] or of the form [e is Null] where
- * [e] has static type [T] promotes the type of [e] to [Null] in the [true]
- * continuation, and to [NonNull(T)] in the [false] continuation.
- *
- * @description Check that [e] is promoted to [Null] in the [true] condition.
- * Test type aliases
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable,nonfunction-type-aliases
-
-class A {
-  foo() {}
-}
-
-typedef AAlias1 = A?
-typedef AAlias2 = AAlias1?
-
-dynamic init() => null;
-
-main() {
-  AAlias1 a1 = init();
-  if (a1 is Null) {
-    a1.foo();
-//     ^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-  }
-
-  if (a1 == null) {
-    a1.foo();
-//     ^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-  }
-
-  AAlias2? a2 = init();
-  if (a2 is Null) {
-    a2.foo();
-//    ^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-  }
-
-  if (a2 == null) {
-    a2.foo();
-//     ^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-  }
-}
diff --git a/LanguageFeatures/nnbd/Null_promotion_A01_t04.dart b/LanguageFeatures/nnbd/Null_promotion_A01_t04.dart
deleted file mode 100644
index daa752b..0000000
--- a/LanguageFeatures/nnbd/Null_promotion_A01_t04.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2019, 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 A check of the form [e == null] or of the form [e is Null] where
- * [e] has static type [T] promotes the type of [e] to [Null] in the [true]
- * continuation, and to [NonNull(T)] in the [false] continuation.
- *
- * @description Check that [e] is promoted to [Null] in the [true] condition.
- * Test pre-NNBD legacy types
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-import "legacy_library_lib.dart";
-
-dynamic init() => null;
-
-main() {
-  A a = init();
-  if (a is Null) {
-    a.foo();
-//    ^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-  }
-
-  if (a == null) {
-    a.foo();
-//    ^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-  }
-}
diff --git a/LanguageFeatures/nnbd/Null_promotion_A01_t05.dart b/LanguageFeatures/nnbd/Null_promotion_A01_t05.dart
deleted file mode 100644
index d020f99..0000000
--- a/LanguageFeatures/nnbd/Null_promotion_A01_t05.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2019, 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 A check of the form [e == null] or of the form [e is Null] where
- * [e] has static type [T] promotes the type of [e] to [Null] in the [true]
- * continuation, and to [NonNull(T)] in the [false] continuation.
- *
- * @description Check that [e] is promoted to [Null] in the [true] condition.
- * Test pre-NNBD legacy types and type aliases
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable,nonfunction-type-aliases
-import "legacy_library_lib.dart";
-import "legacy_library_aliases_lib.dart" as legacy;
-
-dynamic init() => null;
-
-typedef AAlias = A;
-
-main() {
-  AAlias a1 = init();
-  if (a1 is Null) {
-    a1.foo();
-//     ^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-  }
-
-  if (a1 == null) {
-    a1.foo();
-//     ^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-  }
-
-  legacy.AAlias a2 = init();
-  if (a2 is Null) {
-    a2.bar();
-//     ^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-  }
-
-  if (a2 == null) {
-    a2.bar();
-//     ^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-  }
-}
