diff --git a/LanguageFeatures/nnbd/static_errors_A04_t01.dart b/LanguageFeatures/nnbd/static_errors_A04_t01.dart
index c6ff26a..7acba04 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t01.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t01.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test Never
+ * @description Check that it is an error if a top level variable or static
+ * variable with a non-nullable type has no initializer expression unless the
+ * variable is marked with the `late` modifier. Test Never
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -28,11 +25,8 @@
 //             ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-  Never n2;
-//      ^^
-// [analyzer] unspecified
-// [cfe] unspecified
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t02.dart b/LanguageFeatures/nnbd/static_errors_A04_t02.dart
index bb8c13c..42d88fc 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t02.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t02.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test Function
+ * @description Check that it is an error if a top level variable or static
+ * variable with a non-nullable type has no initializer expression unless the
+ * variable is marked with the `late` modifier. Test Function
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -29,11 +26,8 @@
 //                ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-  Function f2;
-//         ^^
-// [analyzer] unspecified
-// [cfe] unspecified
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t03.dart b/LanguageFeatures/nnbd/static_errors_A04_t03.dart
index 994caec..60b320d 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t03.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t03.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test function type
+ * @description Check that it is an error if a top level variable or static
+ * variable with a non-nullable type has no initializer expression unless the
+ * variable is marked with the `late` modifier. Test function type
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -30,11 +27,8 @@
 //           ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-  Foo f2;
-//    ^^
-// [analyzer] unspecified
-// [cfe] unspecified
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t04.dart b/LanguageFeatures/nnbd/static_errors_A04_t04.dart
index 2182459..78b812c 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t04.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t04.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test some class A
+ * @description Check that it is an error if a top level variable or static
+ * variable with a non-nullable type has no initializer expression unless the
+ * variable is marked with the `late` modifier. Test some class A
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -29,25 +26,17 @@
 // [analyzer] unspecified
 // [cfe] unspecified
 
-
 class C {
   static A a1;
 //         ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-  A a2;
-//  ^^
-// [analyzer] unspecified
-// [cfe] unspecified
   static String s1;
 //              ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-  String s2;
-//       ^^
-// [analyzer] unspecified
-// [cfe] unspecified
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t05.dart b/LanguageFeatures/nnbd/static_errors_A04_t05.dart
index efaf14e..00b967a 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t05.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t05.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test some class A*
+ * @description Check that it is an error if a top level variable or static
+ * variable with a non-nullable type has no initializer expression unless the
+ * variable is marked with the `late` modifier. Test some class A*
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -30,11 +27,8 @@
 //         ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-  A a2;
-//  ^^
-// [analyzer] unspecified
-// [cfe] unspecified
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t06.dart b/LanguageFeatures/nnbd/static_errors_A04_t06.dart
deleted file mode 100644
index 10751cd..0000000
--- a/LanguageFeatures/nnbd/static_errors_A04_t06.dart
+++ /dev/null
@@ -1,31 +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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
- *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test some type
- * <X extends Object>
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-// Requirements=nnbd-strong
-
-class C<X extends Object> {
-  X x;
-//  ^
-// [analyzer] unspecified
-// [cfe] unspecified
-}
-
-main() {
-}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t07.dart b/LanguageFeatures/nnbd/static_errors_A04_t07.dart
deleted file mode 100644
index 93ec4da..0000000
--- a/LanguageFeatures/nnbd/static_errors_A04_t07.dart
+++ /dev/null
@@ -1,31 +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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
- *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test some type
- * <X extends Object?>
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-// Requirements=nnbd-strong
-
-class C<X extends Object?> {
-  X x;
-//  ^
-// [analyzer] unspecified
-// [cfe] unspecified
-}
-
-main() {
-}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t08.dart b/LanguageFeatures/nnbd/static_errors_A04_t08.dart
index 4cb5d04..e860960 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t08.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t08.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test FutureOr<Never>
+ * @description Check that it is an error if a top level variable or static
+ * variable with a non-nullable type has no initializer expression unless the
+ * variable is marked with the `late` modifier. Test FutureOr<Never>
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -30,11 +27,8 @@
 //                       ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-  FutureOr<Never> n2;
-//                ^^
-// [analyzer] unspecified
-// [cfe] unspecified
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t09.dart b/LanguageFeatures/nnbd/static_errors_A04_t09.dart
index 459dc41..7487e07 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t09.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t09.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test FutureOr<F> where F is
+ * @description Check that it is an error if a top level variable or static
+ * variable with a non-nullable type has no initializer expression unless the
+ * variable is marked with the `late` modifier. Test FutureOr<F> where F is
  * a function type
  * @author sgrekhov@unipro.ru
  */
@@ -43,17 +40,8 @@
 //                     ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-
-  FutureOr<Function> f5;
-//                   ^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  FutureOr<Foo> f6;
-//              ^^
-// [analyzer] unspecified
-// [cfe] unspecified
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t10.dart b/LanguageFeatures/nnbd/static_errors_A04_t10.dart
index 7325b39..ceadad2 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t10.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t10.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test FutureOr<A> where A is
+ * @description Check that it is an error if a top level variable or static
+ * variable with a non-nullable type has no initializer expression unless the
+ * variable is marked with the `late` modifier. Test FutureOr<A> where A is
  * some class
  * @author sgrekhov@unipro.ru
  */
@@ -43,17 +40,8 @@
 //                        ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-
-  FutureOr<A> f5;
-//            ^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  FutureOr<String> f6;
-//                 ^^
-// [analyzer] unspecified
-// [cfe] unspecified
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t11.dart b/LanguageFeatures/nnbd/static_errors_A04_t11.dart
index 230a139..cfd80aa 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t11.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t11.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test FutureOr<A*>
+ * @description Check that it is an error if a top level variable or static
+ * variable with a non-nullable type has no initializer expression unless the
+ * variable is marked with the `late` modifier. Test FutureOr<A*>
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -31,12 +28,8 @@
 //                   ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-
-  FutureOr<A> f3;
-//            ^^
-// [analyzer] unspecified
-// [cfe] unspecified
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t12.dart b/LanguageFeatures/nnbd/static_errors_A04_t12.dart
deleted file mode 100644
index e79fc49..0000000
--- a/LanguageFeatures/nnbd/static_errors_A04_t12.dart
+++ /dev/null
@@ -1,32 +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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
- *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test FutureOr<T>, where
- * <T extends Object>
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-// Requirements=nnbd-strong
-import "dart:async";
-
-class C<T extends Object> {
-  FutureOr<T> t;
-//            ^
-// [analyzer] unspecified
-// [cfe] unspecified
-}
-
-main() {
-}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t13.dart b/LanguageFeatures/nnbd/static_errors_A04_t13.dart
index 568bf0c..f96e8f8 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t13.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t13.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test FutureOr<FutureOr<A>>
+ * @description Check that it is an error if a top level variable or static
+ * variable with a non-nullable type has no initializer expression unless the
+ * variable is marked with the `late` modifier. Test FutureOr<FutureOr<A>>
  * where A is some class
  * @author sgrekhov@unipro.ru
  */
@@ -43,17 +40,8 @@
 //                                  ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-
-  FutureOr<FutureOr<A>> f5;
-//                      ^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  FutureOr<FutureOr<String>> f6;
-//                           ^^
-// [analyzer] unspecified
-// [cfe] unspecified
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t14.dart b/LanguageFeatures/nnbd/static_errors_A04_t14.dart
index ae86bab..17e24fe 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t14.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t14.dart
@@ -4,17 +4,14 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression and is not initialized in a constructor via an
- * initializing formal or an initializer list entry. Test F*, where F
- * is a function type
+ * @description Check that it is an error if a top level variable or static
+ * variable with a non-nullable type has no initializer expression unless the
+ * variable is marked with the `late` modifier. Test F*, where F is a function
+ * type
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -32,12 +29,8 @@
 //                 ^^
 // [analyzer] unspecified
 // [cfe] unspecified
-
-  LegacyFoo f3;
-//          ^^
-// [analyzer] unspecified
-// [cfe] unspecified
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t15.dart b/LanguageFeatures/nnbd/static_errors_A04_t15.dart
deleted file mode 100644
index f4f003e..0000000
--- a/LanguageFeatures/nnbd/static_errors_A04_t15.dart
+++ /dev/null
@@ -1,41 +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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
- *
- * @description Check that it is no compile-time error if an instance field
- * with potentially non-nullable type has no initializer expression but
- * initialized in a constructor via an initializing formal or an initializer
- * list entry. Test Function types
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-// Requirements=nnbd-strong
-typedef void Foo();
-
-class A {
-  Function f1;
-  Foo f2;
-  A(Function f1, Foo f2): this.f1 = f1, this.f2 = f2 {}
-}
-
-class C {
-  Function f1;
-  Foo f2;
-  C(this.f1, this.f2);
-}
-
-void foo() {}
-int bar() => 42;
-
-main() {
-  new A(bar, foo);
-  new C(bar, foo);
-}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t16.dart b/LanguageFeatures/nnbd/static_errors_A04_t16.dart
deleted file mode 100644
index b35cd67..0000000
--- a/LanguageFeatures/nnbd/static_errors_A04_t16.dart
+++ /dev/null
@@ -1,36 +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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
- *
- * @description Check that it is no compile-time error if an instance field
- * with potentially non-nullable type has no initializer expression but
- * initialized in a constructor via an initializing formal or an initializer
- * list entry. Test some class A
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-// Requirements=nnbd-strong
-class A {}
-
-class C1 {
-  A a;
-  C1(A a): this.a = a {}
-}
-
-class C2 {
-  A a;
-  C2(this.a);
-}
-
-main() {
-  new C1(new A());
-  new C2(new A());
-}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t17.dart b/LanguageFeatures/nnbd/static_errors_A04_t17.dart
deleted file mode 100644
index 3ffccb2..0000000
--- a/LanguageFeatures/nnbd/static_errors_A04_t17.dart
+++ /dev/null
@@ -1,39 +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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
- *
- * @description Check that it is no compile-time error if an instance field
- * with potentially non-nullable type has no initializer expression but
- * initialized in a constructor via an initializing formal or an initializer
- * list entry. Test <T extends Object>
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-// Requirements=nnbd-strong
-class A {}
-
-class C1<T extends Object> {
-  T t;
-  C1(T t): this.t = t {}
-}
-
-class C2<T extends Object> {
-  T t;
-  C2(this.t);
-}
-
-main() {
-  new C1<A>(new A());
-  new C2<A>(new A());
-
-  new C1<String>("Show must go on");
-  new C2<String>("Lily was here");
-}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t19.dart b/LanguageFeatures/nnbd/static_errors_A04_t19.dart
deleted file mode 100644
index 77041d5..0000000
--- a/LanguageFeatures/nnbd/static_errors_A04_t19.dart
+++ /dev/null
@@ -1,39 +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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
- *
- * @description Check that it is no compile-time error if an instance field
- * with potentially non-nullable type has no initializer expression but
- * initialized in a constructor via an initializing formal or an initializer
- * list entry. Test <T extends Object?>
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-// Requirements=nnbd-strong
-class A {}
-
-class C1<T extends Object?> {
-  T t;
-  C1(T t): this.t = t {}
-}
-
-class C2<T extends Object?> {
-  T t;
-  C2(this.t);
-}
-
-main() {
-  new C1<A>(new A());
-  new C2<A>(new A());
-
-  new C1<String>("Show must go on");
-  new C2<String>("Lily was here");
-}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t20.dart b/LanguageFeatures/nnbd/static_errors_A04_t20.dart
deleted file mode 100644
index e168370..0000000
--- a/LanguageFeatures/nnbd/static_errors_A04_t20.dart
+++ /dev/null
@@ -1,39 +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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
- *
- * @description Check that it is no compile-time error if an instance field
- * with potentially non-nullable type has no initializer expression but
- * initialized in a constructor via an initializing formal or an initializer
- * list entry. Test F*, where F
- * is a function type
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-// Requirements=nnbd-strong
-import "legacy_lib.dart";
-
-class C1 {
-  LegacyFoo f;
-
-  C1(LegacyFoo f): this.f = f {}
-}
-
-class C2 {
-  LegacyFoo f;
-
-  C2(this.f);
-}
-
-main() {
-  new C1(legacyFoo);
-  new C2(legacyFoo);
-}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t21.dart b/LanguageFeatures/nnbd/static_errors_A04_t21.dart
index 95514c6..a62d556 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t21.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t21.dart
@@ -4,15 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test Never
+ * @description Check that it is not an error if a top level or static
+ * variable  with potentially non-nullable type has no initializer expression
+ * but marked with a 'late' modifier. Test Never
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -22,10 +20,8 @@
 class C {
   static late Never n1;
   static late final Never n2;
-  late Never n3;
-  late final Never n4;
-  covariant late Never n5;
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t22.dart b/LanguageFeatures/nnbd/static_errors_A04_t22.dart
index a3ebf3d..b5a6d34 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t22.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t22.dart
@@ -4,15 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test Function
+ * @description Check that it is not an error if a top level or static
+ * variable  with potentially non-nullable type has no initializer expression
+ * but marked with a 'late' modifier. Test Function
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -23,10 +21,8 @@
 class C {
   static late Function x1;
   static late final Function x2;
-  late Function x3;
-  late final Function x4;
-  covariant late Function x5;
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t23.dart b/LanguageFeatures/nnbd/static_errors_A04_t23.dart
index 9ff1ecf..02f3994 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t23.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t23.dart
@@ -4,15 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test function type
+ * @description Check that it is not an error if a top level or static
+ * variable  with potentially non-nullable type has no initializer expression
+ * but marked with a 'late' modifier. Test function type
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -24,10 +22,8 @@
 class C {
   static late Foo x1;
   static late final Foo x2;
-  late Foo x3;
-  late final Foo x4;
-  covariant late Foo x5;
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t24.dart b/LanguageFeatures/nnbd/static_errors_A04_t24.dart
index 1dd814f..4e2f035 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t24.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t24.dart
@@ -4,15 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test some class A
+ * @description Check that it is not an error if a top level or static
+ * variable  with potentially non-nullable type has no initializer expression
+ * but marked with a 'late' modifier. Test some class A
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -24,10 +22,8 @@
 class C {
   static late A x1;
   static late final A x2;
-  late A x3;
-  late final A x4;
-  covariant late A x5;
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t25.dart b/LanguageFeatures/nnbd/static_errors_A04_t25.dart
index 7ff5d97..c928f41 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t25.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t25.dart
@@ -4,15 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test some class A*
+ * @description Check that it is not an error if a top level or static
+ * variable  with potentially non-nullable type has no initializer expression
+ * but marked with a 'late' modifier. Test some class A*
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -24,10 +22,8 @@
 class C {
   static late A x1;
   static late final A x2;
-  late A x3;
-  late final A x4;
-  covariant late A x5;
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t26.dart b/LanguageFeatures/nnbd/static_errors_A04_t26.dart
deleted file mode 100644
index e3ea035..0000000
--- a/LanguageFeatures/nnbd/static_errors_A04_t26.dart
+++ /dev/null
@@ -1,29 +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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
- *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test some type
- * <X extends Object>
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-// Requirements=nnbd-strong
-
-class C<X extends Object> {
-  late X x3;
-  late final X x4;
-  covariant late X x5;
-}
-
-main() {
-}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t27.dart b/LanguageFeatures/nnbd/static_errors_A04_t27.dart
deleted file mode 100644
index 48c4928..0000000
--- a/LanguageFeatures/nnbd/static_errors_A04_t27.dart
+++ /dev/null
@@ -1,29 +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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
- *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test some type
- * <X extends Object?>
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-// Requirements=nnbd-strong
-
-class C<X extends Object?> {
-  late X x3;
-  late final X x4;
-  covariant late X x5;
-}
-
-main() {
-}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t28.dart b/LanguageFeatures/nnbd/static_errors_A04_t28.dart
index 2be098c..0aafa6f 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t28.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t28.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test
- * FutureOr<Never>
+ * @description Check that it is not an error if a top level or static
+ * variable  with potentially non-nullable type has no initializer expression
+ * but marked with a 'late' modifier. Test FutureOr<Never>
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -24,10 +21,8 @@
 class C {
   static late FutureOr<Never> x1;
   static late final FutureOr<Never> x2;
-  late FutureOr<Never> x3;
-  late final FutureOr<Never> x4;
-  covariant late FutureOr<Never> x5;
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t29.dart b/LanguageFeatures/nnbd/static_errors_A04_t29.dart
index 3c09c7c..e16efde 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t29.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t29.dart
@@ -4,16 +4,14 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test FutureOr<F>
- * where F is a function type
+ * @description Check that it is not an error if a top level or static
+ * variable  with potentially non-nullable type has no initializer expression
+ * but marked with a 'late' modifier. Test FutureOr<F> where F is a function
+ * type
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -27,16 +25,11 @@
 class C {
   static late FutureOr<Function> x1;
   static late final FutureOr<Function> x2;
-  late FutureOr<Function> x3;
-  late final FutureOr<Function> x4;
-  covariant late FutureOr<Function> x5;
 
-  static late FutureOr<Foo> x6;
-  static late final FutureOr<Foo> x7;
-  late FutureOr<Foo> x8;
-  late final FutureOr<Foo> x9;
-  covariant late FutureOr<Foo> x10;
+  static late FutureOr<Foo> x3;
+  static late final FutureOr<Foo> x4;
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t30.dart b/LanguageFeatures/nnbd/static_errors_A04_t30.dart
index 3c2a8be..2e827d4 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t30.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t30.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test FutureOr<A>
- * where A is some class
+ * @description Check that it is not an error if a top level or static
+ * variable  with potentially non-nullable type has no initializer expression
+ * but marked with a 'late' modifier. Test FutureOr<A> where A is some class
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -26,10 +23,8 @@
 class C {
   static late FutureOr<A> x1;
   static late final FutureOr<A> x2;
-  late FutureOr<A> x3;
-  late final FutureOr<A> x4;
-  covariant late FutureOr<A> x5;
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t31.dart b/LanguageFeatures/nnbd/static_errors_A04_t31.dart
index 77ed484..944ece0 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t31.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t31.dart
@@ -4,15 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test FutureOr<A*>
+ * @description Check that it is not an error if a top level or static
+ * variable  with potentially non-nullable type has no initializer expression
+ * but marked with a 'late' modifier. Test FutureOr<A*>
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -25,10 +23,8 @@
 class C {
   static late FutureOr<A> x1;
   static late final FutureOr<A> x2;
-  late FutureOr<A> x3;
-  late final FutureOr<A> x4;
-  covariant late FutureOr<A> x5;
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t32.dart b/LanguageFeatures/nnbd/static_errors_A04_t32.dart
deleted file mode 100644
index 364ef31..0000000
--- a/LanguageFeatures/nnbd/static_errors_A04_t32.dart
+++ /dev/null
@@ -1,30 +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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
- *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test FutureOr<T>,
- * where <T extends Object>
- * @author sgrekhov@unipro.ru
- */
-// SharedOptions=--enable-experiment=non-nullable
-// Requirements=nnbd-strong
-import "dart:async";
-
-class C<T extends Object> {
-  late FutureOr<T> x3;
-  late final FutureOr<T> x4;
-  covariant late FutureOr<T> x5;
-}
-
-main() {
-}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t33.dart b/LanguageFeatures/nnbd/static_errors_A04_t33.dart
index 583fbbb..a464607 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t33.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t33.dart
@@ -4,16 +4,14 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test
- * FutureOr<FutureOr<A>> where A is some class
+ * @description Check that it is not an error if a top level or static
+ * variable  with potentially non-nullable type has no initializer expression
+ * but marked with a 'late' modifier. Test FutureOr<FutureOr<A>> where A is some
+ * class
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -26,10 +24,8 @@
 class C {
   static late FutureOr<FutureOr<A>> x1;
   static late final FutureOr<FutureOr<A>> x2;
-  late FutureOr<FutureOr<A>> x3;
-  late final FutureOr<FutureOr<A>> x4;
-  covariant late FutureOr<FutureOr<A>> x5;
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t34.dart b/LanguageFeatures/nnbd/static_errors_A04_t34.dart
index 5f29d44..552acfb 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t34.dart
+++ b/LanguageFeatures/nnbd/static_errors_A04_t34.dart
@@ -4,16 +4,13 @@
  * BSD-style license that can be found in the LICENSE file.
  */
 /**
- * @assertion It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a top level variable or static variable with a
+ * non-nullable type has no initializer expression unless the variable is marked
+ * with the `late` modifier.
  *
- * @description Check that it is not an error if a top level variable, static
- * variable, or instance field with potentially non-nullable type has no
- * initializer expression but marked with a 'late' modifier. Test F*, where F
- * is a function type
+ * @description Check that it is not an error if a top level or static
+ * variable  with potentially non-nullable type has no initializer expression
+ * but marked with a 'late' modifier. Test F*, where F is a function type
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -26,10 +23,8 @@
 class C {
   static late LegacyFoo x1;
   static late final LegacyFoo x2;
-  late LegacyFoo x3;
-  late final LegacyFoo x4;
-  covariant late LegacyFoo x5;
 }
 
 main() {
+  new C();
 }
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t01.dart b/LanguageFeatures/nnbd/static_errors_A05_t01.dart
new file mode 100644
index 0000000..24fe8b9
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t01.dart
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test Never
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+class C {
+  Never n;
+//      ^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t02.dart b/LanguageFeatures/nnbd/static_errors_A05_t02.dart
new file mode 100644
index 0000000..1a92353
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t02.dart
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier. Test Function
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+class C {
+  Function f;
+//         ^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t03.dart b/LanguageFeatures/nnbd/static_errors_A05_t03.dart
new file mode 100644
index 0000000..7d8127d
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t03.dart
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test function type
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+typedef void Foo();
+
+class C {
+  Foo f;
+//    ^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t04.dart b/LanguageFeatures/nnbd/static_errors_A05_t04.dart
new file mode 100644
index 0000000..54b0e11
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t04.dart
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test some class A
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+class A {}
+
+class C {
+  A a;
+//  ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  String s;
+//       ^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t05.dart b/LanguageFeatures/nnbd/static_errors_A05_t05.dart
new file mode 100644
index 0000000..ac06bde
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t05.dart
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test some class A*
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "legacy_lib.dart";
+
+class C {
+  A a;
+//  ^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t06.dart b/LanguageFeatures/nnbd/static_errors_A05_t06.dart
new file mode 100644
index 0000000..94e78fb
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t06.dart
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test some type
+ * <X extends Object>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+class C<X extends Object> {
+  X x;
+//  ^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t07.dart b/LanguageFeatures/nnbd/static_errors_A05_t07.dart
new file mode 100644
index 0000000..e106f96
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t07.dart
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test some type
+ * <X extends Object?>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+class C<X extends Object?> {
+  X x;
+//  ^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t08.dart b/LanguageFeatures/nnbd/static_errors_A05_t08.dart
new file mode 100644
index 0000000..32b51d5
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t08.dart
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test FutureOr<Never>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+
+class C {
+  FutureOr<Never> n2;
+//                ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t09.dart b/LanguageFeatures/nnbd/static_errors_A05_t09.dart
new file mode 100644
index 0000000..273dd4b
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t09.dart
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test FutureOr<F> where
+ * F is a function type
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+
+typedef void Foo();
+
+class C {
+  FutureOr<Function> f1;
+//                   ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  FutureOr<Foo> f2;
+//              ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t10.dart b/LanguageFeatures/nnbd/static_errors_A05_t10.dart
new file mode 100644
index 0000000..f7433ef
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t10.dart
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test FutureOr<F> where
+ * F is a function type. Test FutureOr<A> where A is some class
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+
+class A {}
+
+class C {
+  FutureOr<A> f1;
+//            ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  FutureOr<String> f2;
+//                 ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t11.dart b/LanguageFeatures/nnbd/static_errors_A05_t11.dart
new file mode 100644
index 0000000..195dae9
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t11.dart
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test FutureOr<F> where
+ * F is a function type. Test FutureOr<A*>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+import "legacy_lib.dart";
+
+class C {
+  FutureOr<A> f;
+//            ^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t12.dart b/LanguageFeatures/nnbd/static_errors_A05_t12.dart
new file mode 100644
index 0000000..e21e7b2
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t12.dart
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test FutureOr<T>, where
+ * <T extends Object>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+
+class C<T extends Object> {
+  FutureOr<T> t;
+//            ^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C<String>();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t13.dart b/LanguageFeatures/nnbd/static_errors_A05_t13.dart
new file mode 100644
index 0000000..28b587e
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t13.dart
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test
+ * FutureOr<FutureOr<A>> where A is some class
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+
+class A {}
+
+class C {
+  FutureOr<FutureOr<A>> f1;
+//                      ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  FutureOr<FutureOr<String>> f2;
+//                           ^^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t14.dart b/LanguageFeatures/nnbd/static_errors_A05_t14.dart
new file mode 100644
index 0000000..2a4184e
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t14.dart
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test F*, where F is a
+ * function type
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "legacy_lib.dart";
+
+class C {
+  LegacyFoo f;
+//          ^
+// [analyzer] unspecified
+// [cfe] unspecified
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t15.dart b/LanguageFeatures/nnbd/static_errors_A05_t15.dart
new file mode 100644
index 0000000..7a699ba
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t15.dart
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is no compile-time error if an instance variable
+ * with a potentially non-nullable type has no initializer expression but
+ * initialized in a constructor via an initializing formal or an initializer
+ * list entry. Test Function types
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+typedef void Foo();
+
+class A {
+  Function f1;
+  Foo f2;
+  A(Function f1, Foo f2): this.f1 = f1, this.f2 = f2 {}
+}
+
+class C {
+  Function f1;
+  Foo f2;
+  C(this.f1, this.f2);
+}
+
+void foo() {}
+int bar() => 42;
+
+main() {
+  new A(bar, foo);
+  new C(bar, foo);
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t16.dart b/LanguageFeatures/nnbd/static_errors_A05_t16.dart
new file mode 100644
index 0000000..a312149
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t16.dart
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is no compile-time error if an instance variable
+ * with a potentially non-nullable type has no initializer expression but
+ * initialized in a constructor via an initializing formal or an initializer
+ * list entry. Test some class A
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+class A {}
+
+class C1 {
+  A a;
+  C1(A a): this.a = a {}
+}
+
+class C2 {
+  A a;
+  C2(this.a);
+}
+
+main() {
+  new C1(new A());
+  new C2(new A());
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t17.dart b/LanguageFeatures/nnbd/static_errors_A05_t17.dart
new file mode 100644
index 0000000..2ed861f
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t17.dart
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test <T extends Object>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+class A {}
+
+class C1<T extends Object> {
+  T t;
+  C1(T t): this.t = t {}
+}
+
+class C2<T extends Object> {
+  T t;
+  C2(this.t);
+}
+
+main() {
+  new C1<A>(new A());
+  new C2<A>(new A());
+
+  new C1<String>("Show must go on");
+  new C2<String>("Lily was here");
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A04_t18.dart b/LanguageFeatures/nnbd/static_errors_A05_t18.dart
similarity index 62%
rename from LanguageFeatures/nnbd/static_errors_A04_t18.dart
rename to LanguageFeatures/nnbd/static_errors_A05_t18.dart
index 2faadf7..c525462 100644
--- a/LanguageFeatures/nnbd/static_errors_A04_t18.dart
+++ b/LanguageFeatures/nnbd/static_errors_A05_t18.dart
@@ -1,19 +1,20 @@
 /*
- * Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
+ * Copyright (c) 2020, 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 It is an error if a top level variable, static variable, or
- * instance field with potentially non-nullable type has no initializer
- * expression and is not initialized in a constructor via an initializing formal
- * or an initializer list entry, unless the variable or field is marked with the
- * 'late' modifier.
+ * @assertion It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
  *
- * @description Check that it is no compile-time error if an instance field
- * with potentially non-nullable type has no initializer expression but
- * initialized in a constructor via an initializing formal or an initializer
- * list entry. Test FutureOr
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test FutureOr
  * @author sgrekhov@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
@@ -60,7 +61,6 @@
   C4(this.n1);
 }
 
-
 main() {
   new C1<String>("s", foo, foo, A(), M(), A());
   new C2<String>("s", foo, foo, A(), M(), A());
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t19.dart b/LanguageFeatures/nnbd/static_errors_A05_t19.dart
new file mode 100644
index 0000000..5c53341
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t19.dart
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier.
+ * Test <T extends Object?>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+class A {}
+
+class C1<T extends Object?> {
+  T t;
+  C1(T t): this.t = t {}
+}
+
+class C2<T extends Object?> {
+  T t;
+  C2(this.t);
+}
+
+main() {
+  new C1<A>(new A());
+  new C2<A>(new A());
+
+  new C1<String>("Show must go on");
+  new C2<String>("Lily was here");
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t20.dart b/LanguageFeatures/nnbd/static_errors_A05_t20.dart
new file mode 100644
index 0000000..61d0970
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t20.dart
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry,
+ * unless the variable is marked with the late modifier. Test F*, where F
+ * is a function type
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "legacy_lib.dart";
+
+class C1 {
+  LegacyFoo f;
+
+  C1(LegacyFoo f): this.f = f {}
+}
+
+class C2 {
+  LegacyFoo f;
+
+  C2(this.f);
+}
+
+main() {
+  new C1(legacyFoo);
+  new C2(legacyFoo);
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t21.dart b/LanguageFeatures/nnbd/static_errors_A05_t21.dart
new file mode 100644
index 0000000..ef916fa
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t21.dart
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test Never
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+class C {
+  late Never n1;
+  late final Never n2;
+  covariant late Never n3;
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t22.dart b/LanguageFeatures/nnbd/static_errors_A05_t22.dart
new file mode 100644
index 0000000..70d7653
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t22.dart
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test Function
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+class C {
+  late Function x1;
+  late final Function x2;
+  covariant late Function x3;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t23.dart b/LanguageFeatures/nnbd/static_errors_A05_t23.dart
new file mode 100644
index 0000000..65d7bc6
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t23.dart
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test function type
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+typedef void Foo();
+
+class C {
+  late Foo x1;
+  late final Foo x2;
+  covariant late Foo x3;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t24.dart b/LanguageFeatures/nnbd/static_errors_A05_t24.dart
new file mode 100644
index 0000000..93e17b5
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t24.dart
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test some class A
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+class A {}
+
+class C {
+  late A x1;
+  late final A x2;
+  covariant late A x3;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t25.dart b/LanguageFeatures/nnbd/static_errors_A05_t25.dart
new file mode 100644
index 0000000..9cff9e8
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t25.dart
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test some class A*
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "legacy_lib.dart";
+
+class C {
+  late A x1;
+  late final A x2;
+  covariant late A x3;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t26.dart b/LanguageFeatures/nnbd/static_errors_A05_t26.dart
new file mode 100644
index 0000000..aedc5b0
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t26.dart
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test some type
+ * <X extends Object>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+class C<X extends Object> {
+  late X x1;
+  late final X x2;
+  covariant late X x3;
+
+  C() {}
+}
+
+main() {
+  new C<String>();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t27.dart b/LanguageFeatures/nnbd/static_errors_A05_t27.dart
new file mode 100644
index 0000000..bf7714d
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t27.dart
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test some type
+ * <X extends Object?>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+class C<X extends Object?> {
+  late X x1;
+  late final X x2;
+  covariant late X x3;
+
+  C() {}
+}
+
+main() {
+  new C<String?>();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t28.dart b/LanguageFeatures/nnbd/static_errors_A05_t28.dart
new file mode 100644
index 0000000..642980b
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t28.dart
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test FutureOr<Never>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+
+class C {
+  late FutureOr<Never> x1;
+  late final FutureOr<Never> x2;
+  covariant late FutureOr<Never> x3;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t29.dart b/LanguageFeatures/nnbd/static_errors_A05_t29.dart
new file mode 100644
index 0000000..71999d9
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t29.dart
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test FutureOr<F> where F is
+ * a function type
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+typedef void Foo();
+
+class C {
+  late FutureOr<Function> x1;
+  late final FutureOr<Function> x2;
+  covariant late FutureOr<Function> x3;
+
+  late FutureOr<Foo> x4;
+  late final FutureOr<Foo> x5;
+  covariant late FutureOr<Foo> x6;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t30.dart b/LanguageFeatures/nnbd/static_errors_A05_t30.dart
new file mode 100644
index 0000000..1e47ac5
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t30.dart
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test FutureOr<A> where A is
+ * some class
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+class A {}
+
+class C {
+  late FutureOr<A> x1;
+  late final FutureOr<A> x2;
+  covariant late FutureOr<A> x3;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t31.dart b/LanguageFeatures/nnbd/static_errors_A05_t31.dart
new file mode 100644
index 0000000..3e73b95
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t31.dart
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test FutureOr<A*>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+import "legacy_lib.dart";
+
+class C {
+  late FutureOr<A> x1;
+  late final FutureOr<A> x2;
+  covariant late FutureOr<A> x3;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t32.dart b/LanguageFeatures/nnbd/static_errors_A05_t32.dart
new file mode 100644
index 0000000..8a93c26
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t32.dart
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test FutureOr<T>,
+ * where <T extends Object>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+
+class C<T extends Object> {
+  late FutureOr<T> x1;
+  late final FutureOr<T> x2;
+  covariant late FutureOr<T> x3;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t33.dart b/LanguageFeatures/nnbd/static_errors_A05_t33.dart
new file mode 100644
index 0000000..a610d19
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t33.dart
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test FutureOr<T>,
+ * where <T extends Object?>
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+
+class C<T extends Object?> {
+  late FutureOr<T> x1;
+  late final FutureOr<T> x2;
+  covariant late FutureOr<T> x3;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t34.dart b/LanguageFeatures/nnbd/static_errors_A05_t34.dart
new file mode 100644
index 0000000..2f46749
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t34.dart
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test FutureOr<FutureOr<A>>
+ * where A is some class
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+import "dart:async";
+class A {}
+
+class C {
+  late FutureOr<FutureOr<A>> x1;
+  late final FutureOr<FutureOr<A>> x2;
+  covariant late FutureOr<FutureOr<A>> x3;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
diff --git a/LanguageFeatures/nnbd/static_errors_A05_t35.dart b/LanguageFeatures/nnbd/static_errors_A05_t35.dart
new file mode 100644
index 0000000..82aa70a
--- /dev/null
+++ b/LanguageFeatures/nnbd/static_errors_A05_t35.dart
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2020, 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 It is an error if a class declaration declares an instance
+ * variable with a potentially non-nullable type and no initializer expression,
+ * and the class has a generative constructor where the variable is not
+ * initialized via an initializing formal or an initializer list entry, unless
+ * the variable is marked with the late modifier.
+ *
+ * @description Check that it is not an error if a class declaration declares an
+ * instance variable with a potentially non-nullable type and no initializer
+ * expression, and the class has a generative constructor where the variable is
+ * not initialized via an initializing formal or an initializer list entry, but
+ * the variable is marked with the 'late' modifier. Test F*, where F is a
+ * function type
+ * @author sgrekhov@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "legacy_lib.dart";
+
+class C {
+  late LegacyFoo x1;
+  late final LegacyFoo x2;
+  covariant late LegacyFoo x3;
+
+  C() {}
+}
+
+main() {
+  new C();
+}
