Fixed Issue #465: tests for Exports added updated.
diff --git a/LanguageFeatures/nnbd/exports_A01_t01.dart b/LanguageFeatures/nnbd/exports_A01_functions_t01.dart
similarity index 69%
copy from LanguageFeatures/nnbd/exports_A01_t01.dart
copy to LanguageFeatures/nnbd/exports_A01_functions_t01.dart
index 4bfd347..b25094e 100644
--- a/LanguageFeatures/nnbd/exports_A01_t01.dart
+++ b/LanguageFeatures/nnbd/exports_A01_functions_t01.dart
@@ -7,22 +7,18 @@
  * @assertion If an unmigrated library re-exports a migrated library, the
  * re-exported symbols retain their migrated status (that is, downstream
  * migrated libraries will see their migrated types).
- * @description Check that opted-in library exported to legacy and then back to
- * opted in is still opted-in library.
+ * @description Check that [void.testme()] function exported from opted-in
+ * library to legacy library and then back to the opted in code, retains its
+ * status.
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
 // Requirements=nnbd-strong
 
+import "../../Utils/expect.dart";
 import "exports_legacy_A01_lib.dart";
 
 main() {
-  A? a1 = new A();
-  A? a2 = null;
-
-  A a3 = new A();
-  A a4 = null;
-//       ^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+  Expect.isTrue(testme is void Function());
+  testme();
 }
diff --git a/LanguageFeatures/nnbd/exports_A01_t01.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t01.dart
similarity index 69%
copy from LanguageFeatures/nnbd/exports_A01_t01.dart
copy to LanguageFeatures/nnbd/exports_A01_typedef_t01.dart
index 4bfd347..454a5a9 100644
--- a/LanguageFeatures/nnbd/exports_A01_t01.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t01.dart
@@ -7,22 +7,19 @@
  * @assertion If an unmigrated library re-exports a migrated library, the
  * re-exported symbols retain their migrated status (that is, downstream
  * migrated libraries will see their migrated types).
- * @description Check that opted-in library exported to legacy and then back to
- * opted in is still opted-in library.
+ * @description Check that [typedef void testme()] exported from opted-in
+ * library to legacy library and then back to the opted in code, retains its
+ * status.
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
 // Requirements=nnbd-strong
 
+import "../../Utils/expect.dart";
 import "exports_legacy_A01_lib.dart";
 
-main() {
-  A? a1 = new A();
-  A? a2 = null;
+typedef expected = void Function();
 
-  A a3 = new A();
-  A a4 = null;
-//       ^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+main() {
+  Expect.equals(expected, def);
 }
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t02.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t02.dart
new file mode 100644
index 0000000..01c7d1f
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t02.dart
@@ -0,0 +1,36 @@
+/*
+ * 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 If an unmigrated library re-exports a migrated library, the
+ * re-exported symbols retain their migrated status (that is, downstream
+ * migrated libraries will see their migrated types).
+ * @description Check that if function typedef with argument of nullable type is
+ * exported from opted-in library to legacy library and then back to the opted
+ * in code, it retains its status.
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "dart:async";
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef exp_nullable_int_arg      = void Function(int? i);
+typedef exp_nullable_object_arg   = void Function(int? i);
+typedef exp_dynamic_arg           = void Function(dynamic i);
+typedef exp_nullable_function_arg = void Function(Function? f);
+typedef exp_null_arg              = void Function(Null n);
+typedef exp_futureOr_arg          = void Function(FutureOr i);
+
+main() {
+  Expect.equals(exp_nullable_int_arg,      def_nullable_int_arg);
+  Expect.equals(exp_nullable_object_arg,   def_nullable_object_arg);
+  Expect.equals(exp_dynamic_arg,           def_dynamic_arg);
+  Expect.equals(exp_nullable_function_arg, def_nullable_function_arg);
+  Expect.equals(exp_null_arg,              def_null_arg);
+  Expect.equals(exp_futureOr_arg,          def_futureOr_arg);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t03.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t03.dart
new file mode 100644
index 0000000..fe4ffc2
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t03.dart
@@ -0,0 +1,32 @@
+/*
+ * 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 If an unmigrated library re-exports a migrated library, the
+ * re-exported symbols retain their migrated status (that is, downstream
+ * migrated libraries will see their migrated types).
+ * @description Check that if function typedef with argument of non-nullable
+ * type is exported from opted-in library to legacy library and then back to the
+ * opted in code, it retains its status.
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "dart:async";
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef exp_int_arg         = void Function(int i);
+typedef exp_object_arg      = void Function(Object o);
+typedef exp_function_arg    = void Function(Function f);
+typedef exp_futureOrInt_arg = void Function(FutureOr<int> i);
+
+main() {
+  Expect.equals(exp_int_arg,         def_int_arg);
+  Expect.equals(exp_object_arg,      def_object_arg);
+  Expect.equals(exp_function_arg,    def_function_arg);
+  Expect.equals(exp_futureOrInt_arg, def_futureOrInt_arg);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_t01.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t04.dart
similarity index 65%
copy from LanguageFeatures/nnbd/exports_A01_t01.dart
copy to LanguageFeatures/nnbd/exports_A01_typedef_t04.dart
index 4bfd347..556fa70 100644
--- a/LanguageFeatures/nnbd/exports_A01_t01.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t04.dart
@@ -7,22 +7,19 @@
  * @assertion If an unmigrated library re-exports a migrated library, the
  * re-exported symbols retain their migrated status (that is, downstream
  * migrated libraries will see their migrated types).
- * @description Check that opted-in library exported to legacy and then back to
- * opted in is still opted-in library.
+ * @description Check that if function typedef with [Never] argument is exported
+ * from opted-in library to legacy library and then back to the opted in code,
+ * it retains its status.
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
 // Requirements=nnbd-strong
 
+import "../../Utils/expect.dart";
 import "exports_legacy_A01_lib.dart";
 
-main() {
-  A? a1 = new A();
-  A? a2 = null;
+typedef exp_never_arg = void Function(Never n);
 
-  A a3 = new A();
-  A a4 = null;
-//       ^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+main() {
+  Expect.equals(exp_never_arg, def_never_arg);
 }
diff --git a/LanguageFeatures/nnbd/exports_A01_t01.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t05.dart
similarity index 63%
copy from LanguageFeatures/nnbd/exports_A01_t01.dart
copy to LanguageFeatures/nnbd/exports_A01_typedef_t05.dart
index 4bfd347..9ddf2ce 100644
--- a/LanguageFeatures/nnbd/exports_A01_t01.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t05.dart
@@ -7,22 +7,19 @@
  * @assertion If an unmigrated library re-exports a migrated library, the
  * re-exported symbols retain their migrated status (that is, downstream
  * migrated libraries will see their migrated types).
- * @description Check that opted-in library exported to legacy and then back to
- * opted in is still opted-in library.
+ * @description Check that if function typedef with required argument is
+ * exported from opted-in library to legacy library and then back to the opted
+ * in code, it retains its status.
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
 // Requirements=nnbd-strong
 
+import "../../Utils/expect.dart";
 import "exports_legacy_A01_lib.dart";
 
-main() {
-  A? a1 = new A();
-  A? a2 = null;
+typedef exp_required_arg = void Function({required int i});
 
-  A a3 = new A();
-  A a4 = null;
-//       ^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+main() {
+  Expect.equals(exp_required_arg, def_required_arg);
 }
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t06.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t06.dart
new file mode 100644
index 0000000..e04941c
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t06.dart
@@ -0,0 +1,36 @@
+/*
+ * 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 If an unmigrated library re-exports a migrated library, the
+ * re-exported symbols retain their migrated status (that is, downstream
+ * migrated libraries will see their migrated types).
+ * @description Check that if function typedef which returns nullable value is
+ * exported from opted-in library to legacy library and then back to the opted
+ * in code, it retains its status.
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "dart:async";
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef exp_getNullableInt      = int? Function();
+typedef exp_getNullableObject   = Object? Function();
+typedef exp_getDynamic          = dynamic Function();
+typedef exp_getNullableFunction = Function? Function();
+typedef exp_getNull             = Null Function();
+typedef exp_getFutureOr         = FutureOr Function();
+
+main() {
+  Expect.equals(exp_getNullableInt,      def_getNullableInt);
+  Expect.equals(exp_getNullableObject,   def_getNullableObject);
+  Expect.equals(exp_getDynamic,          def_getDynamic);
+  Expect.equals(exp_getNullableFunction, def_getNullableFunction);
+  Expect.equals(exp_getNull,             def_getNull);
+  Expect.equals(exp_getFutureOr,         def_getFutureOr);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_typedef_t07.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t07.dart
new file mode 100644
index 0000000..3411706
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t07.dart
@@ -0,0 +1,32 @@
+/*
+ * 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 If an unmigrated library re-exports a migrated library, the
+ * re-exported symbols retain their migrated status (that is, downstream
+ * migrated libraries will see their migrated types).
+ * @description Check that if function typedef which returns non-nullable value
+ * is exported from opted-in library to legacy library and then back to the
+ * opted in code, it retains its status.
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "dart:async";
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+typedef exp_getInt         = int Function();
+typedef exp_getObject      = Object Function();
+typedef exp_getFunction    = Function Function();
+typedef exp_getFutureOrInt = FutureOr<int> Function();
+
+main() {
+  Expect.equals(exp_getInt,         def_getInt);
+  Expect.equals(exp_getObject,      def_getObject);
+  Expect.equals(exp_getFunction,    def_getFunction);
+  Expect.equals(exp_getFutureOrInt, def_getFutureOrInt);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_t01.dart b/LanguageFeatures/nnbd/exports_A01_typedef_t08.dart
similarity index 65%
copy from LanguageFeatures/nnbd/exports_A01_t01.dart
copy to LanguageFeatures/nnbd/exports_A01_typedef_t08.dart
index 4bfd347..8af7bd4 100644
--- a/LanguageFeatures/nnbd/exports_A01_t01.dart
+++ b/LanguageFeatures/nnbd/exports_A01_typedef_t08.dart
@@ -7,22 +7,19 @@
  * @assertion If an unmigrated library re-exports a migrated library, the
  * re-exported symbols retain their migrated status (that is, downstream
  * migrated libraries will see their migrated types).
- * @description Check that opted-in library exported to legacy and then back to
- * opted in is still opted-in library.
+ * @description Check that if function typedef which returns [Never] is exported
+ * from opted-in library to legacy library and then back to the opted in code,
+ * it retains its status.
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
 // Requirements=nnbd-strong
 
+import "../../Utils/expect.dart";
 import "exports_legacy_A01_lib.dart";
 
-main() {
-  A? a1 = new A();
-  A? a2 = null;
+typedef exp_getNever = Never Function();
 
-  A a3 = new A();
-  A a4 = null;
-//       ^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+main() {
+  Expect.equals(exp_getNever, def_getNever);
 }
diff --git a/LanguageFeatures/nnbd/exports_A01_var_t01.dart b/LanguageFeatures/nnbd/exports_A01_var_t01.dart
new file mode 100644
index 0000000..3d81ed6
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_var_t01.dart
@@ -0,0 +1,29 @@
+/*
+ * 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 If an unmigrated library re-exports a migrated library, the
+ * re-exported symbols retain their migrated status (that is, downstream
+ * migrated libraries will see their migrated types).
+ * @description Check that if nullable unassigned variable in opted-in library
+ * is exported to legacy library and then back to the opted in code, it retains
+ * its status, i.e. its value is [null].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+main() {
+  Expect.isNull(nullable_i1);
+  Expect.isNull(nullable_o1);
+  Expect.isNull(d1);
+  Expect.isNull(f1);
+  Expect.isNull(n1);
+  Expect.isNull(fo1);
+  Expect.isNull(fofo1);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_var_t02.dart b/LanguageFeatures/nnbd/exports_A01_var_t02.dart
new file mode 100644
index 0000000..1524f5e
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_var_t02.dart
@@ -0,0 +1,42 @@
+/*
+ * 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 If an unmigrated library re-exports a migrated library, the
+ * re-exported symbols retain their migrated status (that is, downstream
+ * migrated libraries will see their migrated types).
+ * @description Check that if [null] variable in opted-in library is exported to
+ * legacy library and then back to the opted in code, it retains its status and
+ * still its value is [null].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+main() {
+  Expect.isNull(nullable_i2);
+  Expect.isNull(nullable_o2);
+  Expect.isNull(d2);
+  Expect.isNull(f2);
+  Expect.isNull(n2);
+  Expect.isNull(fo2);
+  Expect.isNull(fofo2);
+
+  nullable_i2 = 1;
+  Expect.equals(1, nullable_i2);
+  nullable_o2 = 1;
+  Expect.equals(1, nullable_o2);
+  d2 = 1;
+  Expect.equals(1, d2);
+  f2 = testme;
+  Expect.equals(testme, f2);
+  fo2 = 1;
+  Expect.equals(1, fo2);
+  fofo2 = 1;
+  Expect.equals(1, fofo2);
+ }
diff --git a/LanguageFeatures/nnbd/exports_A01_var_t03.dart b/LanguageFeatures/nnbd/exports_A01_var_t03.dart
new file mode 100644
index 0000000..b7e7945
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_var_t03.dart
@@ -0,0 +1,34 @@
+/*
+ * 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 If an unmigrated library re-exports a migrated library, the
+ * re-exported symbols retain their migrated status (that is, downstream
+ * migrated libraries will see their migrated types).
+ * @description Check that if non-null variable of nullable type from opted-in
+ * library is exported to legacy library and then back to the opted in code, it
+ * retains its status and so can be assigned to [null].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "../../Utils/expect.dart";
+import "exports_legacy_A01_lib.dart";
+
+main() {
+  nullable_i3 = null;
+  Expect.isNull(nullable_i3);
+  nullable_o3 = null;
+  Expect.isNull(nullable_o3);
+  d3 = null;
+  Expect.isNull(d3);
+  f3 = null;
+  Expect.isNull(f3);
+  fo3 = null;
+  Expect.isNull(fo3);
+  fofo3 = null;
+  Expect.isNull(fofo3);
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_var_t04.dart b/LanguageFeatures/nnbd/exports_A01_var_t04.dart
new file mode 100644
index 0000000..7a2ff3d
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_A01_var_t04.dart
@@ -0,0 +1,40 @@
+/*
+ * 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 If an unmigrated library re-exports a migrated library, the
+ * re-exported symbols retain their migrated status (that is, downstream
+ * migrated libraries will see their migrated types).
+ * @description Check that if non-nullable unassigned in opted-in library is
+ * exported to legacy library and then back to the opted in code, it retains
+ * its status, i.e. still it cannot be assigned to [null].
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+import "exports_legacy_A01_lib.dart";
+
+main() {
+  i = null;
+//    ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  o = null;
+//    ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  f = null;
+//    ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  fi = null;
+//     ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified1
+}
diff --git a/LanguageFeatures/nnbd/exports_A01_t01.dart b/LanguageFeatures/nnbd/exports_A01_var_t05.dart
similarity index 70%
rename from LanguageFeatures/nnbd/exports_A01_t01.dart
rename to LanguageFeatures/nnbd/exports_A01_var_t05.dart
index 4bfd347..c0ab4f2 100644
--- a/LanguageFeatures/nnbd/exports_A01_t01.dart
+++ b/LanguageFeatures/nnbd/exports_A01_var_t05.dart
@@ -7,22 +7,17 @@
  * @assertion If an unmigrated library re-exports a migrated library, the
  * re-exported symbols retain their migrated status (that is, downstream
  * migrated libraries will see their migrated types).
- * @description Check that opted-in library exported to legacy and then back to
- * opted in is still opted-in library.
+ * @description Check that if [Never] variable in opted-in library is exported
+ * to legacy library and then back to the opted in code, it is still [Never].
  * @author iarkh@unipro.ru
  */
 // SharedOptions=--enable-experiment=non-nullable
 // Requirements=nnbd-strong
 
+import "../../Utils/expect.dart";
 import "exports_legacy_A01_lib.dart";
 
 main() {
-  A? a1 = new A();
-  A? a2 = null;
-
-  A a3 = new A();
-  A a4 = null;
-//       ^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+  late Never n;
+  Expect.throws(() { n = aNever; } );
 }
diff --git a/LanguageFeatures/nnbd/exports_A02_t01.dart b/LanguageFeatures/nnbd/exports_A02_t01.dart
index 4ef72f8..73a0dbb 100644
--- a/LanguageFeatures/nnbd/exports_A02_t01.dart
+++ b/LanguageFeatures/nnbd/exports_A02_t01.dart
@@ -13,10 +13,7 @@
 // SharedOptions=--enable-experiment=non-nullable
 // Requirements=nnbd-strong
 
-export "legacy_lib.dart";
+export "exports_legacy_lib.dart";
 //      ^^^^^^^^^^^^^^^^^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
-
-main() {
-}
diff --git a/LanguageFeatures/nnbd/exports_legacy_A01_lib.dart b/LanguageFeatures/nnbd/exports_legacy_A01_lib.dart
index fbf4fff..b3334df 100644
--- a/LanguageFeatures/nnbd/exports_legacy_A01_lib.dart
+++ b/LanguageFeatures/nnbd/exports_legacy_A01_lib.dart
@@ -10,6 +10,6 @@
 // @dart=2.6
 
 library export_opted_lib;
-export "opted_in_lib.dart";
+export "exports_opted_in_lib.dart";
 
 
diff --git a/LanguageFeatures/nnbd/exports_legacy_lib.dart b/LanguageFeatures/nnbd/exports_legacy_lib.dart
new file mode 100644
index 0000000..aea81c2
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_legacy_lib.dart
@@ -0,0 +1,13 @@
+/*
+ * 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.
+ */
+/**
+ * @author iarkh@unipro.ru
+ */
+// @dart=2.6
+// SharedOptions=--enable-experiment=non-nullable
+library legacy_library_lib;
+
+class A {}
\ No newline at end of file
diff --git a/LanguageFeatures/nnbd/exports_opted_in_lib.dart b/LanguageFeatures/nnbd/exports_opted_in_lib.dart
new file mode 100644
index 0000000..2c54a63
--- /dev/null
+++ b/LanguageFeatures/nnbd/exports_opted_in_lib.dart
@@ -0,0 +1,139 @@
+/*
+ * 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.
+ */
+/**
+ * @author iarkh@unipro.ru
+ */
+// SharedOptions=--enable-experiment=non-nullable
+// Requirements=nnbd-strong
+
+library override_opted_in_lib;
+
+import "dart:async";
+
+// Nullable variables:
+int?               nullable_i1;
+Object?            nullable_o1;
+dynamic            d1;
+Function?          f1;
+Null               n1;
+FutureOr           fo1;
+FutureOr<FutureOr> fofo1;
+
+int?               nullable_i2 = null;
+Object?            nullable_o2 = null;
+dynamic            d2          = null;
+Function?          f2          = null;
+Null               n2          = null;
+FutureOr           fo2         = null;
+FutureOr<FutureOr> fofo2       = null;
+
+int?               nullable_i3 = 1;
+Object?            nullable_o3 = 1;
+dynamic            d3          = 1;
+Function?          f3          = testme;
+FutureOr           fo3         = 1;
+FutureOr<FutureOr> fofo3       = 1;
+
+// Non-nullable variables:
+int i            = 0;
+Object o         = 0;
+Function f       = testme;
+FutureOr<int> fi = 0;
+
+Never aNever = throw "Should not reach here";
+
+// Generic classes:
+class GENERIC_NONNULLABLE_INT<T extends int>           {}
+class GENERIC_NONNULLABLE_OBJECT<T extends Object>     {}
+class GENERIC_NONNULLABLE_FUNCTION<T extends Function> {}
+
+class GENERIC_NULLABLE<T>                            {}
+class GENERIC_DYNAMIC<T>                             {}
+class GENERIC_NULLABLE_INT<T extends int?>           {}
+class GENERIC_NULLABLE_OBJECT<T extends Object?>     {}
+class GENERIC_NULLABLE_FUNCTION<T extends Function?> {}
+class GENERIC_NULL<T extends Null>                   {}
+
+class GENERIC_NEVER<T extends Never> {}
+
+// Function typedefs:
+typedef def = void Function();
+
+typedef def_nullable_int_arg      = void Function(int? i);
+typedef def_nullable_object_arg   = void Function(int? i);
+typedef def_dynamic_arg           = void Function(dynamic i);
+typedef def_nullable_function_arg = void Function(Function? f);
+typedef def_null_arg              = void Function(Null n);
+typedef def_futureOr_arg          = void Function(FutureOr i);
+
+typedef def_int_arg         = void Function(int i);
+typedef def_object_arg      = void Function(Object o);
+typedef def_function_arg    = void Function(Function f);
+typedef def_futureOrInt_arg = void Function(FutureOr<int> i);
+
+typedef def_never_arg = void Function(Never n);
+
+typedef def_required_arg = void Function({required int i});
+
+typedef def_getNullableInt      = int? Function();
+typedef def_getNullableObject   = Object? Function();
+typedef def_getDynamic          = dynamic Function();
+typedef def_getNullableFunction = Function? Function();
+typedef def_getNull             = Null Function();
+typedef def_getFutureOr         = FutureOr Function();
+
+typedef def_getInt         = int Function();
+typedef def_getObject      = Object Function();
+typedef def_getFunction    = Function Function();
+typedef def_getFutureOrInt = FutureOr<int> Function();
+
+typedef def_getNever = Never Function();
+
+
+// Functions:
+
+void testme() {}
+
+void test_nullable_int_arg(int? i)       {}
+void test_nullable_Object_arg(int? i)    {}
+void test_dynamic_arg(dynamic i)         {}
+void test_nullable_function(Function? f) {}
+void test_null_arg(Null n)               {}
+void test_futureOr_arg(FutureOr i)       {}
+
+void test_int_arg(int i)                   {}
+void test_object_arg(Object o)             {}
+void test_function_arg(Function f)         {}
+void test_futureOrInt_arg(FutureOr<int> i) {}
+
+void test_never_arg(Never n) {}
+
+void test_required_arg({required int i}) {}
+
+int? getNullableInt()           => null;
+Object? getNullableObject()     => null;
+dynamic getDynamic()            => null;
+Function? getNullableFunction() => null;
+Null getNull()                  => null;
+FutureOr getFutureOr()          => null;
+
+int getInt()                   => 1;
+Object getObject()             => 1;
+Function getFunction()         => testme;
+FutureOr<int> getFutureOrInt() => 1;
+
+Never getNever() => throw("Should not reach here");
+
+void testMeDynamic<T>()                            {}
+void testMeNullableInt<T extends int?>()           {}
+void testMeNullableFunction<T extends Function?>() {}
+void testMeNullableObject<T extends Object?>()     {}
+void testMeNull<T extends Null>()                  {}
+void testMeFutureOr<T extends FutureOr>()          {}
+
+void testMeInt<T extends int>()           {}
+void testMeFunction<T extends Function>() {}
+void testMeObject<T extends Object>()     {}
diff --git a/LanguageFeatures/nnbd/type_reification_legacy_lib.dart b/LanguageFeatures/nnbd/type_reification_legacy_lib.dart
index 1ddf2d9..3121991 100644
--- a/LanguageFeatures/nnbd/type_reification_legacy_lib.dart
+++ b/LanguageFeatures/nnbd/type_reification_legacy_lib.dart
@@ -22,12 +22,10 @@
 typedef F3<T> = void Function(T);
 typedef F4<T> = T Function();
 
-int test1(A1) { return 0; }
-int test2(A) { return 1; }
+int test1(A1) => 0;
+int test2(A) => 1;
 void test3(A1) {}
-int test4<B1 extends B>(A1 a) { return 2; }
-int test5<T>(A a) { return 3; }
-dynamic test6<T>(a) { return ""; }
-int test7() { return 1; }
-
-
+int test4<B1 extends B>(A1 a) => 2;
+int test5<T>(A a) => 3;
+dynamic test6<T>(a) => "";
+int test7() => 1;