Fixes #1189: tests corrected according to https://dart-review.googlesource.com/c/sdk/+/212290.
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t01.dart
deleted file mode 100644
index 7b1d4dd..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t01.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> = X
-/// Function(Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends A<Y>> = X Function(Y);
-typedef G_expected = A<dynamic> Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t02.dart
deleted file mode 100644
index c50638b..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t02.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> = Y
-/// Function(X)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends A<Y>> = Y Function(X);
-typedef G_expected = A<dynamic> Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t03.dart
deleted file mode 100644
index 70b1ce7..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t03.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> = X
-/// Function(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends A<Y>> = X Function(X, Y);
-typedef G_expected = A<dynamic> Function(A<dynamic>, A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t04.dart
deleted file mode 100644
index b249bc8..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t04.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> = Y
-/// Function(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends A<Y>> = Y Function(X, Y);
-typedef G_expected = A<dynamic> Function(A<Never>, A<dynamic>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t05.dart
index 249f5c8..c2c9928 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t05.dart
@@ -40,9 +40,11 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> = void
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function(X, Y)
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t06.dart
index 92eb027..1d85f75 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t06.dart
@@ -40,9 +40,11 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> = void
-/// Function<X, Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function<X, Y>()
+///
 /// @author iarkh@unipro.ru
 
 
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t07.dart
index 31e3ff2..a13220c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t07.dart
@@ -40,17 +40,21 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X, Y>(X, Y))]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<X, Y>(X, Y))
+///
 /// @author iarkh@unipro.ru
 
 
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
-typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X, Y1 extends Y>(X, Y);
-typedef G_expected = void Function<X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>, A<dynamic>);
+typedef G<X extends A<X>, Y extends X> = void Function<
+    X1 extends X, Y1 extends Y>(X, Y);
+typedef G_expected = void Function<
+    X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>, A<dynamic>);
 
 main() {
   Expect.equals(G_expected, G);
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t08.dart
index 7d739d8..ce8f6dc 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t08.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X, Y>(X))]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function<X, Y>(X))
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t09.dart
index c5ec572..3e39b42 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t09.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X, Y>(Y))]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function<X, Y>(Y))
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t10.dart
deleted file mode 100644
index 1eed996..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t10.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X1 extends X>(Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends A<Y>> = void Function<X1 extends X>(Y);
-typedef G_expected = void Function<X extends A<dynamic>>(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t11.dart
deleted file mode 100644
index e6331a7..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t11.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X1 extends X>(X, Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends A<Y>> = void Function<X1 extends X>(X, Y);
-typedef G_expected = void Function<X extends A<dynamic>>(A<dynamic>, A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t12.dart
deleted file mode 100644
index 4c4fa49..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t12.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<Y1 extends Y>(X)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends A<Y>> = void Function<Y1 extends Y>(X);
-typedef G_expected = void Function<X extends A<dynamic>>(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t13.dart
deleted file mode 100644
index c2c84b6..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t13.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<Y1 extends Y>(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends A<Y>> = void Function<Y1 extends Y>(X, Y);
-typedef G_expected = void Function<X extends A<dynamic>>(A<Never>, A<dynamic>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t14.dart
deleted file mode 100644
index 42c3a0f..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t14.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function(X)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends A<Y>> = void Function(X);
-typedef G_expected = void Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t15.dart
deleted file mode 100644
index 8efe7dc..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t15.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function(Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends A<Y>> = void Function(Y);
-typedef G_expected = void Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t16.dart
index 9237306..2ac4f69 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t16.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> = X
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t17.dart
index 7d52d08..7a9919c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t17.dart
@@ -40,9 +40,11 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> = Y
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = Y Function()
+///
 /// @author iarkh@unipro.ru
 
 
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t18.dart
index b7d0135..2ef9e98 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t18.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t19.dart
index a08338a..e49194c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t19.dart
@@ -40,9 +40,11 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X1 extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function<X1 extends X>()
+///
 /// @author iarkh@unipro.ru
 
 
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t20.dart
index 5678ac9..25b392d 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_01_t20.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function<Y1 extends Y>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t01.dart
deleted file mode 100644
index 9a53a97..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t01.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = X
-/// Function(Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends X> = X Function(Y);
-typedef G_expected = A<dynamic> Function(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t02.dart
index 59fe44a..6841b19 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t02.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t02.dart
@@ -40,12 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = Y
-/// Function(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = Y Function(X)
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t03.dart
deleted file mode 100644
index fe7c53b..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t03.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = X
-/// Function(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends X> = X Function(X, Y);
-typedef G_expected = A<dynamic> Function(A<dynamic>, Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t04.dart
index 6872f5c..5df5ddb 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t04.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t04.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = Y
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = Y Function(X, Y)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t05.dart
index 8823f04..ee90896 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t05.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function(X, Y)
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t06.dart
index 28aadbb..b24e52a 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t06.dart
@@ -40,12 +40,11 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X, Y>()]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<X, Y>()
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t07.dart
index 31e3ff2..92330ad 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t07.dart
@@ -40,17 +40,20 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X, Y>(X, Y))]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<X, Y>(X, Y))
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
-typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X, Y1 extends Y>(X, Y);
-typedef G_expected = void Function<X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>, A<dynamic>);
+typedef G<X extends A<X>, Y extends X> =
+    void Function<X1 extends X, Y1 extends Y>(X, Y);
+typedef G_expected = void Function<
+    X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>, A<dynamic>);
 
 main() {
   Expect.equals(G_expected, G);
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t08.dart
index e18b3fe..34fa8df 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t08.dart
@@ -40,17 +40,20 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X, Y>(X))]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<X, Y>(X))
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
-typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X, Y1 extends Y>(X);
-typedef G_expected = void Function<X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>);
+typedef G<X extends A<X>, Y extends X> =
+    void Function<X1 extends X, Y1 extends Y>(X);
+typedef G_expected =
+    void Function<X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>);
 
 main() {
   Expect.equals(G_expected, G);
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t09.dart
index cfd3c8d..ba8b7b7 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t09.dart
@@ -40,17 +40,21 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X, Y>(Y))]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<X, Y>(Y)
+///
 /// @author iarkh@unipro.ru
 
 
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
-typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X, Y1 extends Y>(Y);
-typedef G_expected = void Function<X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>);
+typedef G<X extends A<X>, Y extends X> =
+    void Function<X1 extends X, Y1 extends Y>(Y);
+typedef G_expected =
+    void Function<X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>);
 
 main() {
   Expect.equals(G_expected, G);
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t10.dart
deleted file mode 100644
index 74c6a48..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t10.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X1 extends X>(Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X>(Y);
-typedef G_expected = void Function<X extends A<dynamic>>(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t11.dart
deleted file mode 100644
index e84becc..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t11.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X1 extends X>(X, Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X>(X, Y);
-typedef G_expected = void Function<X extends A<dynamic>>(A<dynamic>, Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t12.dart
index 98b59d4..3564a2e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t12.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t12.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<Y1 extends Y>(X)
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t13.dart
index 96786ad..0adedfd 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t13.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t13.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<Y1 extends Y>(X, Y)
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t14.dart
index c8dca0d..afbe237 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t14.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t14.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function(X)
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t15.dart
deleted file mode 100644
index 6479fbc..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t15.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function(Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<X>, Y extends X> = void Function(Y);
-typedef G_expected = void Function(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t16.dart
index 3aa7f10..6947f5a 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t16.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = X
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t17.dart
index 874e1e6..bc23dd5 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t17.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = Y
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = Y Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t18.dart
index b1765ad..645088b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t18.dart
@@ -40,12 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function()]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t19.dart
index d8a393d..7b9615d 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t19.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X1 extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t20.dart
index 762efd6..f7f9359 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_02_t20.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<Y1 extends Y>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t01.dart
index ad79e17..d77853a 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t01.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t01.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = X
-/// Function(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = X Function(Y)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t02.dart
deleted file mode 100644
index b5329af..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t02.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = Y
-/// Function(X)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<Y>> = Y Function(X);
-typedef G_expected = A<dynamic> Function(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t03.dart
index 9f6ef74..1068e27 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t03.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t03.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = X
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = X Function(X, Y)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t04.dart
deleted file mode 100644
index 86c4e67..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t04.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = Y
-/// Function(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<Y>> = Y Function(X, Y);
-typedef G_expected = A<dynamic> Function(Never, A<dynamic>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t05.dart
index 1a104fe..863c6fc 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t05.dart
@@ -40,13 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function(X, Y)]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function(X, Y)
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t06.dart
index af64976..4158694 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t06.dart
@@ -40,12 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X, Y1 extends Y>]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// G<X extends Y, Y extends A<Y>> = void Function<X1 extends X, Y1 extends Y>
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t07.dart
index 58456fb..0c4e7c2 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t07.dart
@@ -40,12 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X, Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// G<X extends Y, Y extends A<Y>> =
+///         void Function<X1 extends X, Y1 extends Y>(X, Y)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t08.dart
index 8bd48a7..9e2c8df 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t08.dart
@@ -40,12 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X, Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// G<X extends Y, Y extends A<Y>> =
+///     void Function<X1 extends X, Y1 extends Y>(X)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t09.dart
index 728b2f0..2d49b8b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t09.dart
@@ -40,12 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X, Y1 extends Y>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// G<X extends Y, Y extends A<Y>> =
+///         void Function<X1 extends X, Y1 extends Y>(Y)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t10.dart
index 869ebe6..e40ad6f 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t10.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t10.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function<X1 extends X>(Y)
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t11.dart
index 6da6cf5..be00cf4 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t11.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t11.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// G<X extends Y, Y extends A<Y>> = void Function<X1 extends X>(X, Y)
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t12.dart
deleted file mode 100644
index 32c0eeb..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t12.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<Y1 extends Y>(X)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<Y>> = void Function<Y1 extends Y>(X);
-typedef G_expected = void Function<X extends A<dynamic>>(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t13.dart
deleted file mode 100644
index b610d00..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t13.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<Y1 extends Y>(X, Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<Y>> = void Function<Y1 extends Y>(X, Y);
-typedef G_expected = void Function<X extends A<dynamic>>(Never, A<dynamic>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t14.dart
deleted file mode 100644
index 44169a2..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t14.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function(X)]
-///
-/// [Y] is unused here, because the concept of being unused is one of the kinds
-/// of variance that each type parameter can have, and their variance is
-/// determined completely by their occurrences on the right hand side of [=] in
-/// the declaration (or the corresponding positions in an old style [typedef T
-/// f(...);]), and [Y] does not occur there. So any occurrence of a raw [G] is a
-/// compile-time error.
-///
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<Y>> = void Function(X);
-typedef G_expected = void Function(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t15.dart
index 848a259..6c686ca 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t15.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t15.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function(Y)
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t16.dart
index 04ac863..df5df19 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t16.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = X
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t17.dart
index d168128..c5baadf 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t17.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = Y
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = Y Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t18.dart
index 3788d35..dc76ce6 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t18.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t19.dart
index f346757..87cf296 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t19.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function<X1 extends X>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t20.dart
index 16f5e9d..e359b39 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_03_t20.dart
@@ -40,9 +40,11 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function<Y1 extends Y>()
+///
 /// @author iarkh@unipro.ru
 
 
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t01.dart
deleted file mode 100644
index 7365c16..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t01.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = X
-/// Function(Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = X Function(Y);
-typedef G_expected = A<dynamic> Function(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t02.dart
deleted file mode 100644
index e2b485b..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t02.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = Y
-/// Function(X)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = Y Function(X);
-typedef G_expected = dynamic Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t03.dart
deleted file mode 100644
index 0cc4374..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t03.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = X
-/// Function(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = X Function(X, Y);
-typedef G_expected = A<dynamic> Function(A<dynamic>, Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t04.dart
deleted file mode 100644
index 55918c3..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t04.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = Y
-/// Function(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = Y Function(X, Y);
-typedef G_expected = dynamic Function(A<Never>, dynamic);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t05.dart
index 790cb55..1d656ff 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t05.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function(X, Y)
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t06.dart
index 7c63042..6a92245 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t06.dart
@@ -40,16 +40,18 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X, Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function<X, Y>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X, Y1 extends Y>();
+typedef G<X extends A<Y>, Y extends X> =
+    void Function<X1 extends X, Y1 extends Y>();
 typedef G_expected = void Function<X extends A<dynamic>, Y extends dynamic>();
 
 main() {
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t07.dart
index c3a5bdd..bcae6b0 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t07.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X, Y>(X, Y))]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function<X, Y>(X, Y))
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t08.dart
index 83af2eb..b9706c0 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t08.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X, Y>(X))]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function<X, Y>(X))
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t09.dart
index 0116799..5d7a111 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t09.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X, Y>(Y))]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function<X, Y>(Y))
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t10.dart
deleted file mode 100644
index d4b710e..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t10.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X1 extends X>(Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X>(Y);
-typedef G_expected = void Function<X extends A<dynamic>>(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t11.dart
deleted file mode 100644
index 0dba21c..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t11.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X1 extends X>(X, Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X>(X, Y);
-typedef G_expected = void Function<X extends A<dynamic>>(A<dynamic>, Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t12.dart
deleted file mode 100644
index a121faa..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t12.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<Y1 extends Y>(X)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = void Function<Y1 extends Y>(X);
-typedef G_expected = void Function<X extends dynamic>(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t13.dart
deleted file mode 100644
index 56f44ce..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t13.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<Y1 extends Y>(X, Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = void Function<Y1 extends Y>(X, Y);
-typedef G_expected = void Function<X extends dynamic>(A<Never>, dynamic);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t14.dart
deleted file mode 100644
index 86f069f..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t14.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function(X)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = void Function(X);
-typedef G_expected = void Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t15.dart
deleted file mode 100644
index 42b2d73..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t15.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function(Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = void Function(Y);
-typedef G_expected = void Function(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t16.dart
index 98d622b..1dcf780 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t16.dart
@@ -40,12 +40,11 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = X
-/// Function()]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = X Function()
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t17.dart
index aa889ad..13aa416 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t17.dart
@@ -40,12 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = Y
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = Y Function()
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t18.dart
index 939843e..61695ae 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t18.dart
@@ -40,12 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function()
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t19.dart
index 6517e7c..3049695 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t19.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X1 extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t20.dart
index 74c95b2..89e47e5 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_04_t20.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y >, Y extends X> = void
-/// Function<Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y >, Y extends X> = void Function<Y1 extends Y>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t01.dart
deleted file mode 100644
index 15fdfa9..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t01.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = X
-/// Function(Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = X Function(Y);
-typedef G_expected = dynamic Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t02.dart
deleted file mode 100644
index 40b8d1c..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t02.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = Y
-/// Function(X)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = Y Function(X);
-typedef G_expected = A<dynamic> Function(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t03.dart
deleted file mode 100644
index 5cd4056..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t03.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = X
-/// Function(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = X Function(X, Y);
-typedef G_expected = dynamic Function(dynamic, A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t04.dart
deleted file mode 100644
index 2fa1442..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t04.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = Y
-/// Function(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = Y Function(X, Y);
-typedef G_expected = A<dynamic> Function(Never, A<dynamic>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t05.dart
index 7cad783..e05160e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t05.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
+///
+/// @description Checks that instantiate-to-bounds works correctly for  typedef
 /// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
 /// Function(X, Y)]
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t06.dart
index dc0a182..fedcbbd 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t06.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// G<X extends Y, Y extends A<X>> = void Function<X1 extends X, Y1 extends Y>
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t07.dart
index f2ee187..a0e5352 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t07.dart
@@ -40,12 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// G<X extends Y, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>(X, Y)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t08.dart
index 55d4ad3..7d526a1 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t08.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// G<X extends Y, Y extends A<X>> = void Function<X1 extends X, Y1 extends Y>(X)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t09.dart
index 8f727d9..88c0561 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t09.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// G<X extends Y, Y extends A<X>> = void Function<X1 extends X, Y1 extends Y>(Y)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t10.dart
deleted file mode 100644
index 91abc39..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t10.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X>(Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X>(Y);
-typedef G_expected = void Function<X extends dynamic>(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t11.dart
deleted file mode 100644
index 9d41b5d..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t11.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X>(X, Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X>(X, Y);
-typedef G_expected = void Function<X extends dynamic>(dynamic, A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t12.dart
deleted file mode 100644
index da65785..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t12.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<Y1 extends Y>(X)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = void Function<Y1 extends Y>(X);
-typedef G_expected = void Function<X extends A<dynamic>>(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t13.dart
deleted file mode 100644
index 0a481fc..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t13.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<Y1 extends Y>(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = void Function<Y1 extends Y>(X, Y);
-typedef G_expected = void Function<X extends A<dynamic>>(Never, A<dynamic>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t14.dart
deleted file mode 100644
index c49f56a..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t14.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function(X)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = void Function(X);
-typedef G_expected = void Function(Never);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t15.dart
deleted file mode 100644
index 7c19992..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t15.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function(Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = void Function(Y);
-
-typedef G_expected = void Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t16.dart
index d44a457..59754a1 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t16.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = X
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t17.dart
index 505f517..b423292 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t17.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = Y
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = Y Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t18.dart
index 13330db..92f0a3e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t18.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t19.dart
index 3661174..4f65fca 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t19.dart
@@ -40,12 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X>()
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t20.dart
index bcdce39..28f861e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_05_t20.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function<Y1 extends Y>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t01.dart
deleted file mode 100644
index 5a7e712..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t01.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> = X
-/// Function(Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends A<X>> = X Function(Y);
-typedef G_expected = A<dynamic> Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t02.dart
deleted file mode 100644
index 2193ef8..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t02.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> = Y
-/// Function(X)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends A<X>> = Y Function(X);
-typedef G_expected = A<dynamic> Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t03.dart
deleted file mode 100644
index 3f4e130..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t03.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> = X
-/// Function(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends A<X>> = X Function(X, Y);
-typedef G_expected = A<dynamic> Function(A<dynamic>, A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t04.dart
deleted file mode 100644
index ffa41b0..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t04.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> = Y
-/// Function(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends A<X>> = Y Function(X, Y);
-typedef G_expected = A<dynamic> Function(A<Never>, A<dynamic>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t05.dart
index c47e2fa..d38be39 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t05.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function(X, Y)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t06.dart
index 0d2a3a0..fc87b49 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t06.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends A<Y>, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// G<X extends A<Y>, Y extends A<X>> = void Function<X1 extends X, Y1 extends Y>
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t07.dart
index dffdc55..5efbfda 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t07.dart
@@ -40,12 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends A<Y>, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>(X, Y)]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// G<X extends A<Y>, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>(X, Y)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t08.dart
index 5d8334b..660fbc9 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t08.dart
@@ -40,12 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends A<Y>, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// G<X extends A<Y>, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>(X)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t09.dart
index 4f83d22..3703c07 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t09.dart
@@ -40,12 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends A<Y>, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// G<X extends A<Y>, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>(Y)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t10.dart
deleted file mode 100644
index dfb3b85..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t10.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<X1 extends X>(Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends A<X>> = void Function<X1 extends X>(Y);
-typedef G_expected = void Function<X extends A<dynamic>>(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t11.dart
deleted file mode 100644
index 865405d..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t11.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [G<X extends A<Y>, Y extends A<X>> = void
-/// Function<X1 extends X>(X, Y)]
-/// @Issue 34689
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends A<X>> = void Function<X1 extends X>(X, Y);
-typedef G_expected = void Function<X extends A<dynamic>>(A<dynamic>, A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t12.dart
deleted file mode 100644
index 267285f..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t12.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<Y1 extends Y>(X)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends A<X>> = void Function<Y1 extends Y>(X);
-typedef G_expected = void Function<X extends A<dynamic>>(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t13.dart
deleted file mode 100644
index f12f09b..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t13.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<Y1 extends Y>(X, Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends A<X>> = void Function<Y1 extends Y>(X, Y);
-typedef G_expected = void Function<X extends A<dynamic>>(A<Never>, A<dynamic>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t14.dart
deleted file mode 100644
index 7d658a9..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t14.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function(X)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends A<X>> = void Function(X);
-typedef G_expected = void Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t15.dart
deleted file mode 100644
index 6258e97..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t15.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function(Y)]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-class A<X> {}
-typedef G<X extends A<Y>, Y extends A<X>> = void Function(Y);
-
-typedef G_expected = void Function(A<Never>);
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t16.dart
index 76b5458..e04105b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t16.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> = X
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t17.dart
index f7d8449..3ac9341 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t17.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> = Y
-/// Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = Y Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t18.dart
index cb5372a..c5f1b20 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t18.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t19.dart
index f56d19f..83e2558 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t19.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<X1 extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function<X1 extends X>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t20.dart
index 1794a20..3f8c0b2 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_06_t20.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function<Y1 extends Y>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t01.dart
index b0d5e5f..b384e16 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t01.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t01.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(); typedef G<X extends A<X>> = X Function()]
+/// typedef A<X> = X Function();
+/// typedef G<X extends A<X>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = X Function();
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t02.dart
index 9c3bf81..6fced3c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t02.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t02.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(X); typedef G<X extends A<X>> = X Function()]
+/// typedef A<X> = void Function(X);
+/// typedef G<X extends A<X>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function(X);
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t03.dart
deleted file mode 100644
index 2b612b7..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t03.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(X); typedef G<X extends A<X>> = X Function()]
-///
-/// @Issue 44786
-/// @Issue dart-lang/language#1133
-///
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-typedef A<X> = X Function(X);
-typedef G<X extends A<X>> = X Function();
-
-typedef expected = dynamic Function(dynamic) Function();
-
-main() {
-  Expect.equals(expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t04.dart
index 40adbfd..6506ee8 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t04.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t04.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(); typedef G<X extends A<X>> = X Function()]
+/// typedef A<X> = void Function();
+/// typedef G<X extends A<X>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function();
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t05.dart
index 81d7ef6..353b999 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t05.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(); typedef G<X extends A<X>> = void Function(X)]
+/// typedef A<X> = X Function();
+/// typedef G<X extends A<X>> = void Function(X)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = X Function();
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t06.dart
index 22a039b..711878c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t06.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(X);
-/// typedef G<X extends A<X>> = void Function(X)]
+/// typedef A<X> = void Function(X);
+/// typedef G<X extends A<X>> = void Function(X)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function(X);
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t07.dart
deleted file mode 100644
index 6efbdd3..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t07.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(X); typedef G<X extends A<X>> = X Function()]
-///
-/// @Issue 44786
-/// @Issue dart-lang/language#1133
-///
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-typedef A<X> = X Function(X);
-typedef G<X extends A<X>> = void Function(X);
-
-typedef expected = void Function(dynamic Function(dynamic));
-
-main() {
-  Expect.equals(expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t08.dart
index fcaf380..5a14d5c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t08.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(); typedef G<X extends A<X>> = X Function()]
+/// typedef A<X> = void Function();
+/// typedef G<X extends A<X>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function();
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t09.dart
index 84d2cbb..bd7da99 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t09.dart
@@ -41,10 +41,11 @@
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(); typedef G<X extends A<X>> = X Function(X)]
+/// typedef A<X> = X Function();
+/// typedef G<X extends A<X>> = X Function(X)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = X Function();
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t10.dart
index 6e75b90..4f38862 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t10.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t10.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(X); typedef G<X extends A<X>> = X Function(X)]
+/// typedef A<X> = void Function(X);
+/// typedef G<X extends A<X>> = X Function(X)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function(X);
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t11.dart
deleted file mode 100644
index 5ddd916..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t11.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(X); typedef G<X extends A<X>> = X Function(X)]
-///
-/// @Issue 44786
-/// @Issue dart-lang/language#1133
-///
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-typedef A<X> = X Function(X);
-typedef G<X extends A<X>> = X Function(X);
-
-typedef expected = dynamic Function(dynamic) Function(dynamic Function(dynamic));
-
-main() {
-  Expect.equals(expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t12.dart
index 5f28235..36ae464 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t12.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t12.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(); typedef G<X extends A<X>> = X Function(X)]
+/// typedef A<X> = void Function();
+/// typedef G<X extends A<X>> = X Function(X)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function();
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t13.dart
index 75d6e63..f9cb18d 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t13.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t13.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(); typedef G<X extends A<X>> = void Function()]
+/// typedef A<X> = X Function();
+/// typedef G<X extends A<X>> = void Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = X Function();
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t14.dart
index fb5fd1f..3016a42 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t14.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t14.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// typedef A<X> = void Function(X); typedef G<X extends A<X>> = void Function()
+/// typedef A<X> = void Function(X);
+/// typedef G<X extends A<X>> = void Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function(X);
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t15.dart
deleted file mode 100644
index 9339dd3..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t15.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for
-/// typedef A<X> = X Function(X); typedef G<X extends A<X>> = void Function()
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-typedef A<X> = X Function(X);
-typedef G<X extends A<X>> = void Function();
-typedef G_expected = void Function();
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t16.dart
index 4f6e332..17ee561 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t16.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// typedef A<X> = void Function(); typedef G<X extends A<X>> = void Function()
+/// typedef A<X> = void Function();
+/// typedef G<X extends A<X>> = void Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function();
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t17.dart
index e697707..7bdad87 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t17.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function();
-/// typedef G<X extends A<X>> = void Function<Y extends X>()]
+/// typedef A<X> = X Function();
+/// typedef G<X extends A<X>> = void Function<Y extends X>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = X Function();
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t18.dart
index b6c3006..fcf2462 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t18.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(X);
-/// typedef G<X extends A<X>> = void Function<Y extends X>()]
+/// typedef A<X> = void Function(X);
+/// typedef G<X extends A<X>> = void Function<Y extends X>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function(X);
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t19.dart
deleted file mode 100644
index 4cba8bb..0000000
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t19.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2018, 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 Instantiate to bound then computes an actual type argument list
-/// for [G] as follows:
-///
-///   Let [Ui],[1] be [Si], for all [i] in [1 .. k]. (This is the "current value"
-///   of the bound for type variable [i], at step [1]; in general we will
-///   consider the current step, [m], and use data for that step, e.g., the bound
-///   [Ui],[m], to compute the data for step [m + 1]).
-///
-///   Let [-->m] be a relation among the type variables [X1 .. Xk] such that
-///   [Xp -->m Xq] iff [Xq] occurs in [Up],[m] (so each type variable is related
-///   to, that is, depends on, every type variable in its bound, possibly
-///   including itself). Let [==>m] be the transitive closure of [-->m]. For each
-///   [m], let [Ui],[m+1], for [i] in [1 .. k], be determined by the following
-///   iterative process:
-///
-///   1. If there exists a [j] in [1 .. k] such that [Xj ==>m X0j] (that is, if
-///   the dependency graph has a cycle) let [M1 .. Mp] be the strongly connected
-///   components (SCCs) with respect to [-->m] (that is, the maximal subsets of
-///   [X1 .. Xk] where every pair of variables in each subset are related in both
-///   directions by [==>m]; note that the SCCs are pairwise disjoint; also, they
-///   are uniquely defined up to reordering, and the order does not matter). Let
-///   [M] be the union of [M1 .. Mp] (that is, all variables that participate in
-///   a dependency cycle). Let [i] be in [1 .. k]. If [Xi] does not belong to [M]
-///   then [Ui,m+1 = Ui,m]. Otherwise there exists a [q] such that [Xi] belongs
-///   to [Mq]; [Ui,m+1] is then obtained from [Ui,m] by replacing every covariant
-///   occurrence of a variable in [Mq] by [dynamic], and replacing every
-///   contravariant occurrence of a variable in [Mq] by [Null].
-///
-///   2. Otherwise, (if no dependency cycle exists) let [j] be the lowest number
-///   such that [Xj] occurs in [Up,m] for some [p] and [Xj -/->m Xq] for all [q]
-///   in [1..k] (that is, [Uj,m] is closed, that is, the current bound of [Xj]
-///   does not contain any type variables; but [Xj] is being depended on by the
-///   bound of some other type variable). Then, for all [i] in [1 .. k], [Ui,m+1]
-///   is obtained from [Ui,m] by replacing every covariant occurrence of [Xj] by
-///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
-///
-///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(X);
-/// typedef G<X extends A<X>> = void Function<Y extends X>()]
-/// @author iarkh@unipro.ru
-
-
-import "../../../../Utils/expect.dart";
-
-typedef A<X> = X Function(X);
-typedef G<X extends A<X>> = void Function<Y extends X>();
-
-typedef B = dynamic Function(dynamic);
-typedef G_expected = void Function<X extends B>();
-
-main() {
-  Expect.equals(G_expected, G);
-}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t20.dart
index abf52e8..a4fbab3 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_typedef_l1_t20.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function();
-/// typedef G<X extends A<X>> = void Function<Y extends X>()]
+/// typedef A<X> = void Function();
+/// typedef G<X extends A<X>> = void Function<Y extends X>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function();
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t01.dart
index a406073..01ea643 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t01.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t01.dart
@@ -40,29 +40,34 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends FutureOr<X>> = X Function()] (covariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for covariant
+/// case: typedef G<X extends FutureOr<X>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "dart:async";
 import "../../../../Utils/expect.dart";
 
 typedef G<X extends FutureOr<X>> = X Function();
 
-main() {
-  G? source;
+testme(G source) {
   var fsource = toF(source);
 
-  F<G<FutureOr<dynamic>>?>? target = fsource;
+  F<G<FutureOr<dynamic>>> target = fsource;
 
-  F<G<FutureOr<Null>>?>? target1 = fsource;
-//                                 ^^^^^^^
+  F<G<FutureOr<Null>>> target1 = fsource;
+//                               ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<FutureOr<Never>>?>? target2 = fsource;
-//                                  ^^^^^^^
+  F<G<FutureOr<Never>>> target2 = fsource;
+//                                ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 }
+
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t02.dart
index d62fefe..6e39f7e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t02.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t02.dart
@@ -40,25 +40,26 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends FutureOr<X>> = void Function(X)] (contravariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for
+/// contravariant case:
+/// typedef G<X extends FutureOr<X>> = void Function(X)]
+///
 ///  @Issue 34689, 34699
 /// @author iarkh@unipro.ru
 
-
 import "dart:async";
 import "../../../../Utils/expect.dart";
 
 typedef G<X extends FutureOr<X>> = void Function(X);
 
-main() {
-  G? source;
+testme(G source) {
   var fsource = toF(source);
 
-  F<G<FutureOr<Never>>?>? target = fsource;
+  F<G<FutureOr<Never>>> target = fsource;
 
-  F<G<FutureOr<Null>>?>? target1 = fsource;
-//                                 ^^^^^^^
+  F<G<FutureOr<Null>>> target1 = fsource;
+//                               ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
@@ -68,3 +69,7 @@
 // [cfe] unspecified
 
 }
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t03.dart
index 217dde9..c0a25fe 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t03.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t03.dart
@@ -40,12 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends FutureOr<X>> = X Function(X)] (invariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for invariant
+/// case: typedef G<X extends FutureOr<X>> = X Function(X)]
+///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
-///
-
 
 import "dart:async";
 import "../../../../Utils/expect.dart";
@@ -67,4 +67,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t04.dart
index 895f925..6d0f7e8 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t04.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t04.dart
@@ -40,12 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends FutureOr<X>> = void Function()] (unused)
+///
+/// @description Checks that instantiate-to-bounds works correctly for the case
+/// with unused type parameter:
+/// typedef G<X extends FutureOr<X>> = void Function()
+///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 import "dart:async";
 import "../../../../Utils/expect.dart";
 
@@ -59,4 +61,7 @@
   F<G<FutureOr<Null>>>    target3 = fsource;
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t05.dart
index 95176f5..156f77a 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_FutureOr_l1_t05.dart
@@ -40,11 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends FutureOr<X>> = void Function<X1 extends X>()] (covariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for covariant
+/// case: G<X extends FutureOr<X>> = void Function<X1 extends X>()
+///
 /// @author iarkh@unipro.ru
 
-
 import "dart:async";
 
 typedef G<X extends FutureOr<X>> = void Function<X1 extends X>();
@@ -63,4 +64,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t01.dart
index f8ffc2d..2b52955 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t01.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t01.dart
@@ -40,64 +40,64 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>> = X Function()] (covariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for covariant
+/// case: G<X extends A<X>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends A<X>> = X Function();
 
-main() {
-  G? source;
+testme(G source) {
   var fsource = toF(source);
 
-  F<G<A<dynamic>>?>? target = fsource;
+  F<G<A<dynamic>>> target = fsource;
 
-  F<G<A<dynamic>?>?>? target0 = fsource;
+  F<G<A<Null>>> target1 = fsource;
+//                        ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<Never>>> target2 = fsource;
+//                         ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<dynamic>>>> target3 = fsource;
 //                              ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<Null>>?>? target1 = fsource;
-//                          ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<Never>>?>? target2 = fsource;
-//                           ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<dynamic>>>?>? target3 = fsource;
-//                                ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<dynamic>>>>?>? target4 = fsource;
-//                                   ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<A<dynamic>>>>>?>? target5 = fsource;
-//                                      ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<Never>>>?>? target6 = fsource;
-//                              ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<Never>>>>?>? target7 = fsource;
+  F<G<A<A<A<dynamic>>>>> target4 = fsource;
 //                                 ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<A<Never>>>>>?>? target8 = fsource;
+  F<G<A<A<A<A<dynamic>>>>>> target5 = fsource;
 //                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+
+  F<G<A<A<Never>>>> target6 = fsource;
+//                            ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<Never>>>>> target7 = fsource;
+//                               ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<A<Never>>>>>> target8 = fsource;
+//                                  ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t02.dart
index d185d8a..b63c100 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t02.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t02.dart
@@ -39,35 +39,35 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>> = void Function(X)] (contravariant)
+ ///
+/// @description Checks that instantiate-to-bounds works correctly for
+ /// contravariant case: typedef G<X extends A<X>> = void Function(X)]
+ ///
 /// @Issue 34689, 34699
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends A<X>> = void Function(X);
 
-main() {
-  G? source;
+testme(G source) {
   var fsource = toF(source);
 
-  F<G<A<Never>>?>? target = fsource;
+  F<G<A<Never>>> target = fsource;
 
-  F<G<A<Never>?>?>? target0 = fsource;
-//                            ^^^^^^^
+  F<G<A<dynamic>>> target1 = fsource;
+//                           ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>>?>? target1 = fsource;
-//                             ^^^^^^^
+  F<G<A<Null>>> target2 = fsource;
+//                        ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+}
 
-  F<G<A<Null>>?>? target2 = fsource;
-//                          ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t03.dart
index dd64ed8..1ec6e7b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t03.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t03.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>> = X Function(X)] (invariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for invariant
+/// case: G<X extends A<X>> = X Function(X)
+///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -66,4 +67,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t04.dart
index 11d9074..a0ae16c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t04.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t04.dart
@@ -40,14 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>> = void Function()] (unused)
+///
+/// @description Checks that instantiate-to-bounds works correctly for the case
+/// with unused type parameter:
+/// typedef G<X extends A<X>> = void Function()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -65,4 +66,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t05.dart
index 560b376..8a9b6cf 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t05.dart
@@ -40,13 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>> = void Function<Y extends X>()] (covariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for covariant
+/// case: typedef G<X extends A<X>> = void Function<Y extends X>()
 ///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>> = void Function<Y extends X>();
 
@@ -64,4 +64,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t06.dart
index e84c07b..7a2e889 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t06.dart
@@ -40,94 +40,95 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [class A<X
-/// extends A<X>>], [typedef G<X extends A<X>> = X Function()] (covariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for covariant
+/// case:
+/// class A<X extends A<X>>;
+/// typedef G<X extends A<X>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X extends A<X>> {}
 typedef G<X extends A<X>> = X Function();
 
-main() {
-  G? source;
+testme(G source) {
   var fsource = toF(source);
-  F<G<A<dynamic>>?>? target = fsource;
+  F<G<A<dynamic>>> target = fsource;
 
-  F<G<A<dynamic>?>?>? target0 = fsource;
+  F<G<A<Null>>> target1 = fsource;
+//                        ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<Never>>> target2 = fsource;
+//                         ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<dynamic>>>> target3 = fsource;
 //                              ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<Null>>?>? target1 = fsource;
-//                          ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<Never>>?>? target2 = fsource;
-//                           ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<dynamic>>>?>? target3 = fsource;
-//                                ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<dynamic>>>>?>? target4 = fsource;
-//                                   ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<A<dynamic>>>>>?>? target5 = fsource;
-//                                      ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<Null>>>?>? target6 = fsource;
-//                             ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<Null>>>>?>? target7 = fsource;
-//                                ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<A<Null>>>>>?>? target8 = fsource;
-//                                   ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<Null>>>?>? target9 = fsource;
-//                             ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<Null>>>>?>? target10 = fsource;
+  F<G<A<A<A<dynamic>>>>> target4 = fsource;
 //                                 ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<A<Null>>>>>?>? target11 = fsource;
+  F<G<A<A<A<A<dynamic>>>>>> target5 = fsource;
 //                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<Never>>>?>? target12 = fsource;
+  F<G<A<A<Null>>>> target6 = fsource;
+//                           ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<Null>>>>> target7 = fsource;
+//                              ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<A<Null>>>>>> target8 = fsource;
+//                                 ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<Null>>>> target9 = fsource;
+//                           ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<Null>>>>> target10 = fsource;
 //                               ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<Never>>>>?>? target13 = fsource;
+  F<G<A<A<A<A<Null>>>>>> target11 = fsource;
 //                                  ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<A<Never>>>>>?>? target14 = fsource;
-//                                     ^^^^^^^
+  F<G<A<A<Never>>>> target12 = fsource;
+//                             ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  F<G<A<A<A<Never>>>>> target13 = fsource;
+//                                ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<A<Never>>>>>> target14 = fsource;
+//                                   ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t07.dart
index 3b0d160..5a9ea9c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t07.dart
@@ -40,12 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [class A<X
-/// extends A<X>>], [typedef G<X extends A<X>> = X Function()] (contravariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for covariant
+/// case:
+/// class A<X extends A<X>>;
+/// typedef G<X extends A<X>> = X Function()
+///
 /// @Issue 34689, 34699
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X extends A<X>> {}
@@ -117,4 +120,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t08.dart
index f943383..fc76e43 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t08.dart
@@ -40,14 +40,16 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [class A<X
-/// extends A<X>>], [typedef G<X extends A<X>> = X Function(X)] (invariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for invariant
+/// case:
+/// class A<X extends A<X>>;
+/// typedef G<X extends A<X>> = X Function(X)
 ///
 /// @Issue @41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X extends A<X>> {}
@@ -68,5 +70,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
 
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t09.dart
index a104cb3..860af0e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t09.dart
@@ -40,14 +40,16 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [class A<X
-/// extends A<X>>], [typedef G<X extends A<X>> = void Function()] (unused)
+///
+/// @description Checks that instantiate-to-bounds works correctly for tha case
+/// with inised type parameters:
+/// class A<X extends A<X>>;
+/// typedef G<X extends A<X>> = void Function()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X extends A<X>> {}
@@ -65,4 +67,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t10.dart
index f17b86d..f1ae921 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t10.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t10.dart
@@ -40,14 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [class A<X
-/// extends A<X>>], [typedef G<X extends A<X>> = void Function<Y extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for
+/// class A<X extends A<X>>
+/// typedef G<X extends A<X>> = void Function<Y extends X>()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X extends A<X>> {}
 typedef G<X extends A<X>> = void Function<Y extends X>();
 
@@ -65,4 +66,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t11.dart
index c465305..9231aef 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t11.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t11.dart
@@ -40,64 +40,69 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>?> = X Function()] (covariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for
+/// typedef G<X extends A<X>?> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends A<X>?> = X Function();
 
-main() {
-  G? source;
+testme(G source) {
   var fsource = toF(source);
 
-  F<G<A<dynamic>?>?>? target = fsource;
+  F<G<A<dynamic>?>> target = fsource;
 
-  F<G<A<dynamic>>?>? target0 = fsource;
-//                             ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<Null>>?>? target1 = fsource;
-//                          ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<Never>>?>? target2 = fsource;
+  F<G<A<dynamic>>> target0 = fsource;
 //                           ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<dynamic>>>?>? target3 = fsource;
-//                                ^^^^^^^
+  F<G<A<Null>?>> target1 = fsource;
+//                         ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<dynamic>>>>?>? target4 = fsource;
-//                                   ^^^^^^^
+  F<G<A<Never>?>> target2 = fsource;
+//                          ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<A<dynamic>>>>>?>? target5 = fsource;
-//                                      ^^^^^^^
+  F<G<A<A<dynamic>>?>> target3 = fsource;
+//                               ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<Never>>>?>? target6 = fsource;
-//                              ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<Never>>>>?>? target7 = fsource;
+  F<G<A<A<A<dynamic>>>>> target4 = fsource;
 //                                 ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<A<Never>>>>>?>? target8 = fsource;
-//                                    ^^^^^^^
+  F<G<A<A<A<A<dynamic>>>>?>> target5 = fsource;
+//                                     ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+
+  F<G<A<A<Never>>>> target6 = fsource;
+//                            ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<Never>>>>> target7 = fsource;
+//                               ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<A<Never>>>>>> target8 = fsource;
+//                                  ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t12.dart
index f54a4a1..cc2fe91 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t12.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t12.dart
@@ -40,59 +40,63 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>> = X? Function()] (covariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for
+/// typedef G<X extends A<X>> = X? Function()
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends A<X>> = X? Function();
 
-main() {
-  G? source;
+testme(G source) {
   var fsource = toF(source);
 
   F<G<A<dynamic>>?>? target = fsource;
 
-  F<G<A<Null>>?>? target1 = fsource;
-//                          ^^^^^^^
+  F<G<A<Null>>> target1 = fsource;
+//                        ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<Never>>?>? target2 = fsource;
-//                           ^^^^^^^
+  F<G<A<Never>>> target2 = fsource;
+//                         ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<dynamic>>>?>? target3 = fsource;
-//                                ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<dynamic>>>>?>? target4 = fsource;
-//                                   ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<A<dynamic>>>>>?>? target5 = fsource;
-//                                      ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<Never>>>?>? target6 = fsource;
+  F<G<A<A<dynamic>>>> target3 = fsource;
 //                              ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<Never>>>>?>? target7 = fsource;
+  F<G<A<A<A<dynamic>>>>> target4 = fsource;
 //                                 ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<A<Never>>>>>?>? target8 = fsource;
+  F<G<A<A<A<A<dynamic>>>>>> target5 = fsource;
 //                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+
+  F<G<A<A<Never>>>> target6 = fsource;
+//                            ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<Never>>>>> target7 = fsource;
+//                               ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<A<Never>>>>>> target8 = fsource;
+//                                  ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t13.dart
index b103377..d878725 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t13.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t13.dart
@@ -39,8 +39,9 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>?> = void Function(X)] (contravariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for
+/// typedef G<X extends A<X>?> = void Function(X)
 /// @Issue 34689, 34699
 /// @author iarkh@unipro.ru
 
@@ -71,4 +72,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t14.dart
index c9899a5..b108274 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t14.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t14.dart
@@ -39,36 +39,40 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>> = void Function(X?)] (contravariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for
+/// typedef G<X extends A<X>> = void Function(X?)
+///
 /// @Issue 34689, 34699
 /// @author iarkh@unipro.ru
 
+import "../../../../Utils/expect.dart";
 
- import "../../../../Utils/expect.dart";
+class A<X> {}
+typedef G<X extends A<X>> = void Function(X?);
 
- class A<X> {}
- typedef G<X extends A<X>> = void Function(X?);
+void testme(G source) {
+  var fsource = toF(source);
 
- void testme(G source) {
-   var fsource = toF(source);
+  F<G<A<Never>>> target = fsource;
 
-   F<G<A<Never>>> target = fsource;
+  F<G<A<Never>?>> target0 = fsource;
+//                          ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
 
-   F<G<A<Never>?>> target0 = fsource;
+  F<G<A<dynamic>>> target1 = fsource;
 //                           ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-   F<G<A<dynamic>>> target1 = fsource;
-//                            ^^^^^^^
+  F<G<A<Null>>> target2 = fsource;
+//                        ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+}
 
-   F<G<A<Null>>> target2 = fsource;
-//                         ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
- }
-
- main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t15.dart
index 2cf4c56..9246e08 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t15.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t15.dart
@@ -40,12 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>> = X Function(X)] (invariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for
+/// typedef G<X extends A<X>> = X Function(X)
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -71,4 +71,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t16.dart
index 47e393e..3bc2432 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t16.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>> = X Function(X)] (invariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for
+/// typedef G<X extends A<X>> = X Function(X)
+///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -66,4 +67,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t17.dart
index cc1f195..1bed198 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t17.dart
@@ -40,14 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>?> = void Function()] (unused)
+///
+/// @description Checks that instantiate-to-bounds works correctly for
+/// typedef G<X extends A<X>?> = void Function()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -63,4 +63,8 @@
   F<G<A<Null>?>>    target5 = fsource;
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t18.dart
index 37962de..21766e1 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t18.dart
@@ -40,13 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>?> = void Function<Y extends X>()] (covariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for
+/// typedef G<X extends A<X>?> = void Function<Y extends X>()
 ///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -71,4 +71,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t19.dart
index c5824d2..7261c1b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t19.dart
@@ -40,13 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef
-///  G<X extends A<X>> = void Function<Y extends X?>()] (covariant)
+///
+/// @description Checks that instantiate-to-bounds works correctly for
+/// typedef G<X extends A<X>> = void Function<Y extends X?>()
 ///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>> = void Function<Y extends X?>();
 
@@ -69,4 +69,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t01.dart
index 2a0cdd7..f41f2be 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t01.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t01.dart
@@ -41,22 +41,36 @@
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
 /// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>>  = X
-/// Function(Y)]
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>>  = X Function(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into [G<A<dynamic>,
+/// A<Never>>] which isn't well-bounded.
 ///
 /// @Issue 34689, 34699, 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> = X Function(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t02.dart
index d95546a..ad19062 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t02.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t02.dart
@@ -41,8 +41,13 @@
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
 /// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> = Y
-/// Function(X)]
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = Y Function(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into [G<A<dynamic>,
+/// A<Never>>] which isn't well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
@@ -53,9 +58,20 @@
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> = Y Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  G == int;
+//^
 // [analyzer] unspecified
 // [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t03.dart
index f717dad..8211d7a 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t03.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t03.dart
@@ -41,22 +41,36 @@
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
 /// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> = X
-/// Function(X, Y)]
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = X Function(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> = X Function(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t04.dart
index 598bcba..eee4668 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t04.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t04.dart
@@ -40,22 +40,37 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> = Y
-/// Function(X, Y)]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = Y Function(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> = Y Function(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  G == int;
+//^
 // [analyzer] unspecified
 // [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t05.dart
index c83e914..4efb5b8 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t05.dart
@@ -41,17 +41,18 @@
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
 /// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function(X, Y)]
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function(X, Y)
+///
 /// @Issue 34699
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> = void Function(X, Y);
 
+
 test(G source) {
   var fsource = toF(source);
 
@@ -88,4 +89,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t06.dart
index 94ab8ed..96f4f44 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t06.dart
@@ -41,12 +41,12 @@
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
 /// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X1 extends X, Y1 extends Y>()]
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> =
+///     void Function<X1 extends X, Y1 extends Y>()
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> =
       void Function<X1 extends X, Y1 extends Y>();
@@ -85,4 +85,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t07.dart
index b1f9e98..f469008 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t07.dart
@@ -41,14 +41,14 @@
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
 /// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X1 extends X, Y1 extends Y>(X, Y)]
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> =
+///     void Function<X1 extends X, Y1 extends Y>(X, Y)
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> =
     void Function<X1 extends X, Y1 extends Y>(X, Y);
@@ -69,4 +69,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t08.dart
index 3badfe4..b94dde2 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t08.dart
@@ -40,9 +40,11 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X1 extends X, Y1 extends Y>(X)]
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> =
+///     void Function<X1 extends X, Y1 extends Y>(X)
 ///
 /// @Issue 41963, 41964
 ///
@@ -69,4 +71,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t09.dart
index 2425615..520f8b0 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t09.dart
@@ -40,9 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X1 extends X, Y1 extends Y>(Y)]
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> =
+///     void Function<X1 extends X, Y1 extends Y>(Y)
+///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
@@ -68,4 +71,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t10.dart
index 35214dc..07a62fd 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t10.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t10.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X1 extends X>(Y)]
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function<X1 extends X>(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> = void Function<X1 extends X>(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t11.dart
index b65336a..4ecb14c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t11.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t11.dart
@@ -39,24 +39,40 @@
 ///   [Uj,m], and replacing every contravariant occurrence of [Xj] by [Null].
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
-///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X1 extends X>(X, Y)]
+///   [<U1,m ..., Uk,m>]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> =
+///    void Function<X1 extends X>(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> = void Function<X1 extends X>(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t12.dart
index 9267272..a50113f 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t12.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t12.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<Y1 extends Y>(X)]
 ///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function<Y1 extends Y>(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
+
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> = void Function<Y1 extends Y>(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t13.dart
index 64619c6..59ba6c5 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t13.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t13.dart
@@ -40,9 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function<Y1 extends Y>(X, Y)
+///
+/// After the type bounds checks in type literals enabling (see
+/// https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a compile
+/// time error because the type literal is expanded into the type which is not
+/// well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t14.dart
index 70e37b8..e5732a9 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t14.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t14.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function(X)]
 ///
-/// @Issue 34689, 34699, 41963, 41964
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function(X)
+///
+/// After the type bounds checks in type literals enabling (see
+/// https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a compile
+/// time error because the type literal is expanded into the type which is not
+/// well-bounded.
+///
+/// @Issue 34689, 34699, 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> = void Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t15.dart
index 4aebca5..3f2f861 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t15.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t15.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function(Y)
+///
+/// After the type bounds checks in type literals enabling (see
+/// https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a compile
+/// time error because the type literal is expanded into the type which is not
+/// well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> = void Function(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t16.dart
index cf936d6..62c8b83 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t16.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// X Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = X Function()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -87,4 +87,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t17.dart
index b2e1cf3..73c5789 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t17.dart
@@ -40,15 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// Y Function()]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = Y Function()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -87,4 +86,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t18.dart
index def096c..5a31c6e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t18.dart
@@ -40,9 +40,10 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function()
 ///
 /// @Issue 41963, 41964
 ///
@@ -78,4 +79,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t19.dart
index 99dd241..2c15a43 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t19.dart
@@ -40,12 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<X1 extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function<X1 extends X>()
 ///
 /// @Issue 41963, 41964
-///
 /// @author iarkh@unipro.ru
 
 
@@ -66,4 +66,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t20.dart
index 920705f..d171bfc 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_01_t20.dart
@@ -40,15 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function<Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function<Y1 extends Y>()
 ///
 /// @Issue 41963, 41964
-///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends A<Y>> = void Function<Y1 extends Y>();
 
@@ -66,4 +65,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t01.dart
index 6920fe7..24ebfd9 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t01.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t01.dart
@@ -41,23 +41,37 @@
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
 ///
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = X
-/// Function(Y)]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = X Function(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 35068, 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = X Function(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t02.dart
index 717b2e2..9511d2c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t02.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t02.dart
@@ -40,9 +40,11 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = Y
-/// Function(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = Y Function(X)
+///
 /// @Issue 35068, 34663, 42197
 /// @author iarkh@unipro.ru
 
@@ -103,4 +105,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t03.dart
index e2c1682..52bb475 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t03.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t03.dart
@@ -40,11 +40,16 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = X
-/// Function(X, Y)]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = X Function(X, Y)
 ///
-/// @Issue 41963, 4196444786
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
+///
+/// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
@@ -53,10 +58,20 @@
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = X Function(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t04.dart
index 83a69be..d72a08b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t04.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t04.dart
@@ -40,51 +40,55 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = Y
-/// Function(X, Y)]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = Y Function(X, Y)
+///
 /// @Issue 35068, 34663, 42197
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = Y Function(X, Y);
 
-main() {
-  G? source;
+test(G source) {
   var fsource = toF(source);
 
-  F<G<A<Never>, A<Never>>?>? target = fsource;
+  F<G<A<Never>, A<Never>>> target = fsource;
 
-  F<G<A<Null>, A<Null>>?>? target1 = fsource;
-//                                   ^^^^^^^
+  F<G<A<Null>, A<Null>>> target1 = fsource;
+//                                 ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, dynamic>?>? target2 = fsource;
-//                                      ^^^^^^^
+  F<G<A<dynamic>, dynamic>> target2 = fsource;
+//                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, Null>?>? target3 = fsource;
-//                                   ^^^^^^^
+  F<G<A<dynamic>, Null>> target3 = fsource;
+//                                 ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, Never>?>? target4 = fsource;
-//                                   ^^^^^^^
+  F<G<A<dynamic>, Never>> target4 = fsource;
+//                                  ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, A<dynamic>>?>? target5 = fsource;
-//                                         ^^^^^^^
+  F<G<A<dynamic>, A<dynamic>>> target5 = fsource;
+//                                       ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<dynamic, A<dynamic>>?>? target6 = fsource;
-//                                      ^^^^^^^
+  F<G<dynamic, A<dynamic>>> target6 = fsource;
+//                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 }
+
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t05.dart
index 9e1c988..865eaf79 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t05.dart
@@ -40,51 +40,55 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function(X, Y)]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function(X, Y)
+///
 /// @Issue 34689, 34699, 35068
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = void Function(X, Y);
 
-main() {
-  G? source;
+test(G source) {
   var fsource = toF(source);
 
-  F<G<A<Never>, Never>?>? target = fsource;
+  F<G<A<Never>, Never>> target = fsource;
 
-  F<G<A<Null>, Null>?>? target0 = fsource;
-//                                ^^^^^^^
+  F<G<A<Null>, Null>> target0 = fsource;
+//                              ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, dynamic>?>? target1 = fsource;
-//                                      ^^^^^^^
+  F<G<A<dynamic>, dynamic>> target1 = fsource;
+//                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, A<Null>>?>? target2 = fsource;
-//                                      ^^^^^^^
+  F<G<A<dynamic>, A<Null>>> target2 = fsource;
+//                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, A<Never>>?>? target3 = fsource;
+  F<G<A<dynamic>, A<Never>>> target3 = fsource;
+//                                     ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<dynamic>, A<dynamic>>> target4 = fsource;
 //                                       ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, A<dynamic>>?>? target4 = fsource;
-//                                         ^^^^^^^
+  F<G<dynamic, A<dynamic>>> target5 = fsource;
+//                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+}
 
-  F<G<dynamic, A<dynamic>>?>? target5 = fsource;
-//                                      ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t06.dart
index 6e94dbe..254b3d9 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t06.dart
@@ -40,14 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X1 extends X, Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<X>, Y extends X> =
+///     void Function<X1 extends X, Y1 extends Y>()]
+///
 /// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> =
     void Function<X1 extends X, Y1 extends Y>();
@@ -86,4 +89,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t07.dart
index 84aee78..cf3ae2d 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t07.dart
@@ -40,14 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X1 extends X, Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<X>, Y extends X> =
+///     void Function<X1 extends X, Y1 extends Y>(X, Y)]
+///
 /// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> =
     void Function<X1 extends X, Y1 extends Y>(X, Y);
@@ -68,4 +71,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t08.dart
index efb7e15..6a8e627 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t08.dart
@@ -40,14 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X1 extends X, Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<X>, Y extends X> =
+///     void Function<X1 extends X, Y1 extends Y>(X)
+///
 /// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> =
     void Function<X1 extends X, Y1 extends Y>(X);
@@ -68,4 +71,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t09.dart
index 0e00b31..c2b023b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t09.dart
@@ -40,14 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X1 extends X, Y1 extends Y>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<X>, Y extends X> =
+///     void Function<X1 extends X, Y1 extends Y>(Y)]
+///
 /// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> =
     void Function<X1 extends X, Y1 extends Y>(Y);
@@ -68,4 +71,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t10.dart
index 4d2e763..4c95ba7 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t10.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t10.dart
@@ -40,22 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X1 extends X>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X>(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
+///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X>(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t11.dart
index d1cd6ff..92ea486 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t11.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t11.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X1 extends X>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X>(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X>(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t12.dart
index dc9690d..4d66cdc 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t12.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t12.dart
@@ -40,9 +40,10 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<Y1 extends Y>(X)
 ///
 /// Let's consider [void Function<X extends A<dynamic>>(A<Never>) target1 =
 /// source]:  The type of [source] is raw [G] which is [G<A<Never>, A<Never>>]
@@ -54,7 +55,6 @@
 /// @Issue 34689, 34699
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = void Function<Y1 extends Y>(X);
 
@@ -112,4 +112,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t13.dart
index 32ab900..3681419 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t13.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t13.dart
@@ -40,99 +40,103 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<Y1 extends Y>(X, Y)]
 ///
-/// There are 4 Compile-time errors here.  In all four cases the assignment isn't
-/// possible because the types of l.h.s. and r.h.s. are generic function types,
-/// and the type parameters have different bounds ([A<dynamic>] vs [A<Null>]) in
-/// all cases.
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<Y1 extends Y>(X, Y)
+///
+/// There are several compile-time errors here.  In all cases the assignment
+/// isn't possible because the types of l.h.s. and r.h.s. are generic function
+/// types, and the type parameters have different bounds ([A<dynamic>] vs
+/// [A<Never>]) in all cases.
 ///
 /// @Issue 34689, 34699
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = void Function<Y1 extends Y>(X, Y);
 
-main() {
-  G? source;
+test(G source) {
 
-  void Function<X extends A<Never>>(A<Never>, A<Never>)? target = source;
+  void Function<X extends A<Never>>(A<Never>, A<Never>) target = source;
 
-  void Function<X extends A<Null>>(A<Null>, A<Null>)? target1 = source;
-//                                                              ^^^^^^
+  void Function<X extends A<Null>>(A<Null>, A<Null>) target1 = source;
+//                                                             ^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  void Function<X extends A<dynamic>>(A<Null>, A<Null>)? target2 = source;
-//                                                                 ^^^^^^
+  void Function<X extends A<dynamic>>(A<Null>, A<Null>) target2 = source;
+//                                                                ^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  void Function<X extends A<dynamic>>(A<Null>, A<dynamic>)? target3 = source;
-//                                                                    ^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  void Function<X extends A<dynamic>>(A<dynamic>, A<Null>)? target4 = source;
-//                                                                    ^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  void Function<X extends A<dynamic>>(A<Null>, A<dynamic>)? target5 = source;
-//                                                                    ^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  void Function<X extends A<dynamic>>(A<Never>, A<Never>)? target6 = source;
+  void Function<X extends A<dynamic>>(A<Null>, A<dynamic>) target3 = source;
 //                                                                   ^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  void Function<X extends A<dynamic>>(A<Never>, A<dynamic>)? target7 = source;
-//                                                                     ^^^^^^
+  void Function<X extends A<dynamic>>(A<dynamic>, A<Null>) target4 = source;
+//                                                                   ^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  void Function<X extends A<dynamic>>(A<dynamic>, A<Never>)? target8 = source;
-//                                                                     ^^^^^^
+  void Function<X extends A<dynamic>>(A<Null>, A<dynamic>) target5 = source;
+//                                                                   ^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  void Function<X extends A<dynamic>>(A<Never>, A<dynamic>)? target9 = source;
-//                                                                     ^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  void Function<X extends A<Never>>(A<Never>, A<dynamic>)? target10 = source;
-//                                                                    ^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  void Function<X extends A<Null>>(A<Null>, A<dynamic>)? target11 = source;
+  void Function<X extends A<dynamic>>(A<Never>, A<Never>) target6 = source;
 //                                                                  ^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  void Function<X extends A<Never>>(A<dynamic>, A<Never>)? target12 = source;
+  void Function<X extends A<dynamic>>(A<Never>, A<dynamic>) target7 = source;
 //                                                                    ^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  void Function<X extends A<Null>>(A<dynamic>, A<Null>)? target13 = source;
-//                                                                  ^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  void Function<X extends A<Never>>(A<Never>, A<dynamic>)? target14 = source;
+  void Function<X extends A<dynamic>>(A<dynamic>, A<Never>) target8 = source;
 //                                                                    ^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  void Function<X extends A<Null>>(A<Null>, A<dynamic>)? target15 = source;
-//                                                                  ^^^^^^
+  void Function<X extends A<dynamic>>(A<Never>, A<dynamic>) target9 = source;
+//                                                                    ^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+
+  void Function<X extends A<Never>>(A<Never>, A<dynamic>) target10 = source;
+//                                                                   ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  void Function<X extends A<Null>>(A<Null>, A<dynamic>) target11 = source;
+//                                                                 ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  void Function<X extends A<Never>>(A<dynamic>, A<Never>) target12 = source;
+//                                                                   ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  void Function<X extends A<Null>>(A<dynamic>, A<Null>) target13 = source;
+//                                                                 ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  void Function<X extends A<Never>>(A<Never>, A<dynamic>) target14 = source;
+//                                                                   ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  void Function<X extends A<Null>>(A<Null>, A<dynamic>) target15 = source;
+//                                                                 ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t14.dart
index 908cd8e..91afc1e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t14.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t14.dart
@@ -41,14 +41,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> =
-/// void Function(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function(X)
+///
 /// @Issue 34689, 34699, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -90,4 +91,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t15.dart
index 8dd6adf..b9bd37c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t15.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t15.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> =
-/// void Function(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = void Function(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t16.dart
index ef8ea7a..1757714 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t16.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// X Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = X Function()
 ///
 /// @Issue 41963, 41964, 43724, 43734
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -87,4 +87,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t17.dart
index 7fc4ad2..8ae2acd 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t17.dart
@@ -40,21 +40,20 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// Y Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = Y Function()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = Y Function();
 
-
 test(G source) {
   var fsource = toF(source);
 
@@ -113,4 +112,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t18.dart
index 9e2d4a1..1b1a7f8 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t18.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>> =
-/// void Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>> = void Function()
 ///
 /// @Issue 41963, 41964, 43724, 43734
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -78,4 +78,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t19.dart
index e44aac8..636a8f7 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t19.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<X1 extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X>()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = void Function<X1 extends X>();
 
@@ -66,4 +66,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t20.dart
index db01d01..3f19823 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_02_t20.dart
@@ -40,16 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends X> = void
-/// Function<Y1 extends Y>()]
-/// @Issue 35068
 ///
-/// @Issue 41963, 41964
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends X> = void Function<Y1 extends Y>()
+///
+/// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<X>, Y extends X> = void Function<Y1 extends Y>();
 
@@ -67,4 +66,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t01.dart
index 33e7245..88ba0a8 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t01.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t01.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = X
-/// Function(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = X Function(Y)
+///
 /// @Issue 35068, 34663, 42197
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -89,5 +90,6 @@
 }
 
 main() {
-
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t02.dart
index 2342652..81f9d7e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t02.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t02.dart
@@ -40,22 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = Y
-/// Function(X)]
 ///
-/// @Issue 41963, 41964
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = Y Function(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
+///
+/// @Issue 41963, 41964, 44786
+/// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> = Y Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t03.dart
index f678c99..3f53603 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t03.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t03.dart
@@ -40,61 +40,66 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = X
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = X Function(X, Y)
+///
 /// @Issue 35068, 34663, 42197
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> = X Function(X, Y);
 
-main() {
-  G? source;
+test(G source) {
   var fsource = toF(source);
 
-  F<G<A<Never>, A<Never>>?>? target = fsource;
+  F<G<A<Never>, A<Never>>> target = fsource;
 
-  F<G<A<Null>, A<Never>>?>? target1 = fsource;
+  F<G<A<Null>, A<Never>>> target1 = fsource;
+//                                  ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<Never>, A<Null>>> target2 = fsource;
+//                                  ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<Null>, A<Null>>> target3 = fsource;
+//                                 ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<Never>, A<dynamic>>> target4 = fsource;
+//                                     ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<Null>, A<dynamic>>> target5 = fsource;
 //                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<Never>, A<Null>>?>? target2 = fsource;
+  F<G<A<dynamic>, A<Never>>> target6 = fsource;
+//                                     ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<dynamic>, A<Null>>> target7 = fsource;
 //                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<Null>, A<Null>>?>? target3 = fsource;
-//                                   ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<Never>, A<dynamic>>?>? target4 = fsource;
+  F<G<A<dynamic>, A<dynamic>>> target8 = fsource;
 //                                       ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+}
 
-  F<G<A<Null>, A<dynamic>>?>? target5 = fsource;
-//                                      ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<dynamic>, A<Never>>?>? target6 = fsource;
-//                                       ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<dynamic>, A<Null>>?>? target7 = fsource;
-//                                      ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<dynamic>, A<dynamic>>?>? target8 = fsource;
-//                                         ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t04.dart
index 8536166..41eb5b3 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t04.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t04.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = Y
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = Y Function(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> = Y Function(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t05.dart
index 1ea1c96..e8524f7 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t05.dart
@@ -40,66 +40,71 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function(X, Y)]
-/// @Issue #34699
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function(X, Y)
+///
+/// @Issue 34699
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> = void Function(X, Y);
 
-main() {
-  G? source;
+test(G source) {
   var fsource = toF(source);
 
-  F<G<Never, A<Never>>?>? target = fsource;
+  F<G<Never, A<Never>>> target = fsource;
 
-  F<G<Null, A<Never>>?>? target1 = fsource;
-//                                 ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<Never, A<Null>>?>? target2 = fsource;
-//                                 ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<Null, A<Null>>?>? target3 = fsource;
-//                                ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<Never>, A<Never>>?>? target4 = fsource;
-//                                     ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<Null>, A<Null>>?>? target5 = fsource;
-//                                   ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<Never, Never>?>? target6 = fsource;
+  F<G<Null, A<Never>>> target1 = fsource;
 //                               ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<Null, Null>?>? target7 = fsource;
+  F<G<Never, A<Null>>> target2 = fsource;
+//                               ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<Null, A<Null>>> target3 = fsource;
+//                              ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<Never>, A<Never>>> target4 = fsource;
+//                                   ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<Null>, A<Null>>> target5 = fsource;
+//                                 ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<Never, Never>> target6 = fsource;
 //                             ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, A<dynamic>>?>? target8 = fsource;
-//                                         ^^^^^^^
+  F<G<Null, Null>> target7 = fsource;
+//                           ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<dynamic, A<dynamic>>?>? target9 = fsource;
-//                                      ^^^^^^^
+  F<G<A<dynamic>, A<dynamic>>> target8 = fsource;
+//                                       ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+
+  F<G<dynamic, A<dynamic>>> target9 = fsource;
+//                                    ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t06.dart
index 4f3dd99..0b28f57 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t06.dart
@@ -40,15 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X, Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends Y, Y extends A<Y>> =
+///     void Function<X1 extends X, Y1 extends Y>()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> =
     void Function<X1 extends X, Y1 extends Y>();
@@ -87,4 +89,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t07.dart
index cf73e81..a2be579 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t07.dart
@@ -40,15 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X, Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends Y, Y extends A<Y>> =
+///     void Function<X1 extends X, Y1 extends Y>(X, Y)
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> =
     void Function<X1 extends X, Y1 extends Y>(X, Y);
@@ -69,4 +71,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t08.dart
index 1e7d507..864335d 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t08.dart
@@ -40,16 +40,16 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X, Y1 extends Y>(X)]
-/// @Issue 35068
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
 ///
-/// @Issue 41963, 41964
+/// typedef G<X extends Y, Y extends A<Y>> =
+///     void Function<X1 extends X, Y1 extends Y>(X)]
+///
+/// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> =
     void Function<X1 extends X, Y1 extends Y>(X);
@@ -70,4 +70,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t09.dart
index f385651..ff6ecab 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t09.dart
@@ -40,15 +40,16 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X, Y1 extends Y>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends Y, Y extends A<Y>> =
+///     void Function<X1 extends X, Y1 extends Y>(Y)
 ///
 /// @Issue 41963, 41964
-///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> =
     void Function<X1 extends X, Y1 extends Y>(Y);
@@ -69,4 +70,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t10.dart
index d80d2df..c78e29b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t10.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t10.dart
@@ -40,28 +40,33 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X>(Y)]
-/// @Issue 42197
 ///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function<X1 extends X>(Y)]
+///
+/// @Issue 42197
 /// @author iarkh@unipro.ru
 
 
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> = void Function<X1 extends X>(Y);
 
+tesdt(G source) {
+  void Function<X extends A<Never>>(A<Never>) target = source;
+
+  void Function<X extends A<Null>>(A<Null>) target1 = source;
+//                                                    ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  void Function<X extends A<dynamic>>(A<dynamic>) target2 = source;
+//                                                          ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-  void Function<X extends A<Never>>(A<Never>)? target = source;
-
-  void Function<X extends A<Null>>(A<Null>)? target1 = source;
-//                                                     ^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  void Function<X extends A<dynamic>>(A<dynamic>)? target2 = source;
-//                                                           ^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t11.dart
index 9fa5c16..a86f1d5 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t11.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t11.dart
@@ -40,28 +40,32 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function<X1 extends X>(X, Y)
+///
 /// @Issue 42197
 /// @author iarkh@unipro.ru
 
-//
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> = void Function<X1 extends X>(X, Y);
 
+test(G source) {
+  void Function<X extends A<Never>>(A<Never>, A<Never>) target = source;
+
+  void Function<X extends A<Null>>(A<Null>, A<Null>) target1 = source;
+//                                                             ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  void Function<X extends A<dynamic>>(A<dynamic>, A<dynamic>) target2 = source;
+//                                                                      ^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-  void Function<X extends A<Never>>(A<Never>, A<Never>)? target = source;
-
-  void Function<X extends A<Null>>(A<Null>, A<Null>)? target1 = source;
-//                                                              ^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  void Function<X extends A<dynamic>>(A<dynamic>, A<dynamic>)? target2 = source;
-//                                                                       ^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t12.dart
index fdf2a28..55ca7b1 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t12.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t12.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function<Y1 extends Y>(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> = void Function<Y1 extends Y>(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t13.dart
index 140dccc..b512e56 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t13.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t13.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function<Y1 extends Y>(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> = void Function<Y1 extends Y>(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t14.dart
index 01cf431..2d54da0 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t14.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t14.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> =
-/// void Function(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function(X)]
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> = void Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t15.dart
index 415af7f..b589e5f 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t15.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t15.dart
@@ -42,15 +42,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> =
-/// void Function(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function(Y)]
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -182,4 +182,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t16.dart
index 0e899c1..05f3ac3 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t16.dart
@@ -40,9 +40,10 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> =
-/// X Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = X Function()
 ///
 /// @Issue 41963, 41964
 ///
@@ -87,4 +88,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t17.dart
index 4d4d126..d6e3206 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t17.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> =
-/// Y Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = Y Function()
 ///
 /// @Issue 41963, 41964, 43724, 43734
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -87,4 +87,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t18.dart
index f950a13..160bbe3 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t18.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> =
-/// void Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function()
 ///
 /// @Issue 41963, 41964, 43724, 43734
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -78,4 +78,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {}main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t19.dart
index d3b1636..0689d81 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t19.dart
@@ -40,15 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<X1 extends X>()]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function<X1 extends X>()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<Y>> = void Function<X1 extends X>();
 
@@ -66,4 +65,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t20.dart
index 25ef083..b15626a 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_03_t20.dart
@@ -40,9 +40,9 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<Y>> = void
-/// Function<Y1 extends Y>()]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<Y>> = void Function<Y1 extends Y>()]
 ///
 /// @Issue 41963, 41964
 ///
@@ -66,4 +66,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t01.dart
index 908a3ad..59e5883 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t01.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t01.dart
@@ -40,22 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X>  = X
-/// Function(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X>  = X Function(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
+///
 /// @Issue 34689, 34699, 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = X Function(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t02.dart
index af02c35..f50e237 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t02.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t02.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = Y
-/// Function(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = Y Function(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = Y Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t03.dart
index 0ef7e09..9caccb4 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t03.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t03.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = X
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = X Function(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = X Function(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t04.dart
index 55f7c45..cebfe61 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t04.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t04.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = Y
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = Y Function(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = Y Function(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t05.dart
index 829da26..cf6f9a8 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t05.dart
@@ -40,61 +40,66 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function(X, Y)
 /// @Issue 34689, 34699, 35068
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = void Function(X, Y);
 
-main() {
+test(G source) {
   G? source;
   var fsource = toF(source);
 
-  F<G<A<Never>, Never>?>? target = fsource;
+  F<G<A<Never>, Never>> target = fsource;
 
-  F<G<A<Null>, Never>?>? target1 = fsource;
-//                                 ^^^^^^^
+  F<G<A<Null>, Never>> target1 = fsource;
+//                               ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<Never>, Null>?>? target2 = fsource;
-//                                 ^^^^^^^
+  F<G<A<Never>, Null>> target2 = fsource;
+//                               ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<Null>, Null>?>? target3 = fsource;
-//                                ^^^^^^^
+  F<G<A<Null>, Null>> target3 = fsource;
+//                              ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, dynamic>?>? target4 = fsource;
-//                                      ^^^^^^^
+  F<G<A<dynamic>, dynamic>> target4 = fsource;
+//                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, A<Never>>?>? target5 = fsource;
+  F<G<A<dynamic>, A<Never>>> target5 = fsource;
+//                                     ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<dynamic>, A<Null>>> target6 = fsource;
+//                                    ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<dynamic>, A<dynamic>>> target7 = fsource;
 //                                       ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, A<Null>>?>? target6 = fsource;
-//                                      ^^^^^^^
+  F<G<dynamic, A<dynamic>>> target8 = fsource;
+//                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+}
 
-  F<G<A<dynamic>, A<dynamic>>?>? target7 = fsource;
-//                                         ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<dynamic, A<dynamic>>?>? target8 = fsource;
-//                                      ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t06.dart
index 7202a6d..5ea56b4 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t06.dart
@@ -40,14 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X1 extends X, Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<Y>, Y extends X> =
+///     void Function<X1 extends X, Y1 extends Y>()
+///
 /// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> =
     void Function<X1 extends X, Y1 extends Y>();
@@ -156,4 +159,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t07.dart
index 26aad69..4cc636e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t07.dart
@@ -40,14 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X1 extends X, Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<Y>, Y extends X> =
+///     void Function<X1 extends X, Y1 extends Y>(X, Y)
+///
 /// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> =
     void Function<X1 extends X, Y1 extends Y>(X, Y);
@@ -78,4 +81,7 @@
   void Function<X extends A<dynamic>, Y extends dynamic>(A<dynamic>, Never) target5 = source;
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t08.dart
index ff18725..edb73cd 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t08.dart
@@ -40,14 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X1 extends X, Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<Y>, Y extends X> =
+///     void Function<X1 extends X, Y1 extends Y>(X)
+///
 /// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X, Y1 extends Y>(X);
 
@@ -80,4 +83,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t09.dart
index 730c783..d8b4e9c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t09.dart
@@ -40,16 +40,20 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X1 extends X, Y1 extends Y>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<Y>, Y extends X> =
+///     void Function<X1 extends X, Y1 extends Y>(Y)
 /// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
 
 class A<X> {}
-typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X, Y1 extends Y>(Y);
+typedef G<X extends A<Y>, Y extends X> =
+    void Function<X1 extends X, Y1 extends Y>(Y);
 
 test(G source) {
   void Function<X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>) target1 = source;
@@ -80,4 +84,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t10.dart
index 1967d1d..11d9308 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t10.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t10.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X1 extends X>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X>(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X>(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t11.dart
index 83c79f0..9105d0f 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t11.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t11.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X1 extends X>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X>(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X>(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t12.dart
index 0f25fa7..cd5bc4f 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t12.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t12.dart
@@ -40,9 +40,10 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function<Y1 extends Y>(X)
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
@@ -53,10 +54,20 @@
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = void Function<Y1 extends Y>(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t13.dart
index b9837d9..cc5b8b1 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t13.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t13.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function<Y1 extends Y>(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = void Function<Y1 extends Y>(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t14.dart
index 59b92c0..3074893 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t14.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t14.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<Y>> =
-/// void Function(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<Y>> = void Function(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 34689, 34699, 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = void Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t15.dart
index a19d51f..4950abf 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t15.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t15.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<Y>> =
-/// void Function(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<Y>> = void Function(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = void Function(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t16.dart
index d470f90..2960c2b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t16.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<Y>> =
-/// X Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<Y>> = X Function()
 ///
 /// @Issue 41963, 41964, 43724, 43734
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -144,4 +144,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t17.dart
index 769a89f..c881afa 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t17.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> =
-/// Y Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = Y Function()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -151,4 +151,7 @@
   F<G<A<Never>, dynamic>> target21 = fsource;
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t18.dart
index e5183fb..642b506 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t18.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<Y>> =
-/// void Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<Y>> = void Function()
 ///
 /// @Issue 41963, 41964, 43724, 43734
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -78,4 +78,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t19.dart
index 3c84651..051f680 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t19.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<X1 extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X>()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = void Function<X1 extends X>();
 
@@ -66,4 +66,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t20.dart
index 639c5c3..c6f4632 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_04_t20.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends X> = void
-/// Function<Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends X> = void Function<Y1 extends Y>()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends X> = void Function<Y1 extends Y>();
 
@@ -81,4 +81,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t01.dart
index 26c3c13..7f8e032 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t01.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t01.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = X
-/// Function(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = X Function(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = X Function(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t02.dart
index ef3c87a..7502177 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t02.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t02.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = Y
-/// Function(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = Y Function(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = Y Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t03.dart
index 0fff3d0..373bd83 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t03.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t03.dart
@@ -40,23 +40,33 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = X
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = X Function(X, Y)
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = X Function(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t04.dart
index e643049..9af8438 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t04.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t04.dart
@@ -40,23 +40,37 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = Y
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = Y Function(X, Y)
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = X Function(X, Y)
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = Y Function(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t05.dart
index 0c1577e..41fb728 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t05.dart
@@ -40,56 +40,61 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function(X, Y)
+///
 /// @Issue 42197
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = void Function(X, Y);
 
-main() {
-  G? source;
+test(G source) {
   var fsource = toF(source);
 
-  F<G<Never, A<Never>>?>? target = fsource;
+  F<G<Never, A<Never>>> target = fsource;
 
-  F<G<Null, A<Null>>?>? target1 = fsource;
-//                                ^^^^^^^
+  F<G<Null, A<Null>>> target1 = fsource;
+//                              ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<Never>, A<Never>>?>? target2 = fsource;
-//                                     ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<Never, Never>?>? target3 = fsource;
-//                               ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<Null>, A<Null>>?>? target4 = fsource;
+  F<G<A<Never>, A<Never>>> target2 = fsource;
 //                                   ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<Null, Null>?>? target5 = fsource;
+  F<G<Never, Never>> target3 = fsource;
 //                             ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, A<dynamic>>?>? target6 = fsource;
-//                                         ^^^^^^^
+  F<G<A<Null>, A<Null>>> target4 = fsource;
+//                                 ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<dynamic, A<dynamic>>?>? target7 = fsource;
-//                                      ^^^^^^^
+  F<G<Null, Null>> target5 = fsource;
+//                           ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+
+  F<G<A<dynamic>, A<dynamic>>> target6 = fsource;
+//                                       ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<dynamic, A<dynamic>>> target7 = fsource;
+//                                    ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t06.dart
index decff80..b98634e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t06.dart
@@ -40,9 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends Y, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>()]
 ///
 /// @Issue 41963, 41964
 ///
@@ -157,4 +160,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t07.dart
index af0f7bc..2f45549 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t07.dart
@@ -40,9 +40,12 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends Y, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>(X, Y)
 ///
 /// @Issue 41963, 41964
 ///
@@ -50,10 +53,10 @@
 
 
 class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X, Y1 extends Y>(X, Y);
+typedef G<X extends Y, Y extends A<X>> =
+    void Function<X1 extends X, Y1 extends Y>(X, Y);
 
 test(G source) {
-
   void Function<X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>, dynamic) target1 = source;
 //                                                                                         ^^^^^^
 // [analyzer] unspecified
@@ -157,4 +160,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t08.dart
index 8aea2e2..5ec90a7 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t08.dart
@@ -40,16 +40,19 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends Y, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>(X)
 /// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X, Y1 extends Y>(X);
+typedef G<X extends Y, Y extends A<X>> =
+    void Function<X1 extends X, Y1 extends Y>(X);
 
 test(G source) {
   void Function<X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>) target1 = source;
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t09.dart
index 0788fd8..409909d 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t09.dart
@@ -40,17 +40,20 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X, Y1 extends Y>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends Y, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>(Y)
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
-typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X, Y1 extends Y>(Y);
+typedef G<X extends Y, Y extends A<X>> =
+    void Function<X1 extends X, Y1 extends Y>(Y);
 
 test(G source) {
   void Function<X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>) target1 = source;
@@ -97,4 +100,7 @@
 
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t10.dart
index 0a32e9e..a236bab 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t10.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t10.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X>(Y)]
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X>(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t11.dart
index 8981da8..bf22fab 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t11.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t11.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X>(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X>(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t12.dart
index 87de647..944874d 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t12.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t12.dart
@@ -40,9 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function<Y1 extends Y>(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
@@ -53,10 +59,20 @@
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = void Function<Y1 extends Y>(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t13.dart
index c526649..3b43f6c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t13.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t13.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function<Y1 extends Y>(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = void Function<Y1 extends Y>(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t14.dart
index c79f349..ff9c4a9 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t14.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t14.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> =
-/// void Function(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 43723, 43734, 43735, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = void Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t15.dart
index 6f64eb8..63a6130 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t15.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t15.dart
@@ -40,23 +40,37 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> =
-/// void Function(Y)]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = void Function(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t16.dart
index ee6c36c..980a570 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t16.dart
@@ -40,9 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> =
-/// X Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = X Function()
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964
 ///
@@ -151,4 +157,7 @@
   F<G<dynamic, A<Never>>> target21 = fsource;
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t17.dart
index b9bd20f..efcf7c8 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t17.dart
@@ -40,15 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> =
-/// Y Function()]
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = Y Function()
 ///
 /// @Issue 41963, 41964, 43724, 43734
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -151,4 +150,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t18.dart
index a179b4b..8866648 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t18.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> =
-/// void Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function()
 ///
 /// @Issue 41963, 41964, 43724, 43734, 43735
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -78,4 +78,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t19.dart
index 25798a7..eee6fa9 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t19.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<X1 extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X>()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = void Function<X1 extends X>();
 
@@ -81,4 +81,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t20.dart
index 269159f..fc4161d 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_05_t20.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends Y, Y extends A<X>> = void
-/// Function<Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends Y, Y extends A<X>> = void Function<Y1 extends Y>()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends Y, Y extends A<X>> = void Function<Y1 extends Y>();
 
@@ -81,4 +81,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t01.dart
index 03ae8a2..ccc7103 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t01.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t01.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<X>, Y extends A<Y>>  = X
-/// Function(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<X>, Y extends A<Y>>  = X Function(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = X Function(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t02.dart
index 07fba7d..11c167b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t02.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t02.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> = Y
-/// Function(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = Y Function(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = Y Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t03.dart
index 3436021..93eeba3 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t03.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t03.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> = X
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = X Function(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = X Function(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t04.dart
index 4be99cb..3dd5b50 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t04.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t04.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> = Y
-/// Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = Y Function(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = Y Function(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t05.dart
index 2bc0f53..726893b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t05.dart
@@ -40,51 +40,56 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function(X, Y)
+///
 /// @Issue 42197
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = void Function(X, Y);
 
-main() {
-  G? source;
+test(G source) {
   var fsource = toF(source);
 
-  F<G<A<Never>, A<Never>>?>? target = fsource;
+  F<G<A<Never>, A<Never>>> target = fsource;
 
-  F<G<A<Null>, A<Null>>?>? target1 = fsource;
-//                                   ^^^^^^^
+  F<G<A<Null>, A<Null>>> target1 = fsource;
+//                                 ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, dynamic>?>? target2 = fsource;
-//                                      ^^^^^^^
+  F<G<A<dynamic>, dynamic>> target2 = fsource;
+//                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, A<Never>>?>? target3 = fsource;
+  F<G<A<dynamic>, A<Never>>> target3 = fsource;
+//                                     ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<dynamic>, A<Null>>> target4 = fsource;
+//                                    ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<dynamic>, A<dynamic>>> target5 = fsource;
 //                                       ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>, A<Null>>?>? target4 = fsource;
-//                                      ^^^^^^^
+  F<G<dynamic, A<dynamic>>> target6 = fsource;
+//                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+}
 
-  F<G<A<dynamic>, A<dynamic>>?>? target5 = fsource;
-//                                         ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<dynamic, A<dynamic>>?>? target6 = fsource;
-//                                      ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t06.dart
index 11d8564..521c727 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t06.dart
@@ -40,15 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<X1 extends X, Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<Y>, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> =
     void Function<X1 extends X, Y1 extends Y>();
@@ -157,4 +159,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t07.dart
index 421866e..5139a99 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t07.dart
@@ -40,15 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<X1 extends X, Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<Y>, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>(X, Y)]
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> =
     void Function<X1 extends X, Y1 extends Y>(X, Y);
@@ -158,4 +160,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t08.dart
index 1454ed5..4c77915 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t08.dart
@@ -40,17 +40,20 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<X1 extends X, Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<Y>, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>(X)
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
-typedef G<X extends A<Y>, Y extends A<X>> = void Function<X1 extends X, Y1 extends Y>(X);
+typedef G<X extends A<Y>, Y extends A<X>> =
+    void Function<X1 extends X, Y1 extends Y>(X);
 
 test(G source) {
   void Function<X extends A<dynamic>, Y extends A<dynamic>>(A<dynamic>) target1 = source;
@@ -131,4 +134,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t09.dart
index ba4d1f7..b22d18e 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t09.dart
@@ -40,14 +40,17 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<X1 extends X, Y1 extends Y>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+///
+/// typedef G<X extends A<Y>, Y extends A<X>> =
+///     void Function<X1 extends X, Y1 extends Y>(Y)
+///
 /// @Issue 35068, 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> =
     void Function<X1 extends X, Y1 extends Y>(Y);
@@ -96,4 +99,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t10.dart
index ff2adaa..5b06819 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t10.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t10.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<X1 extends X>(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function<X1 extends X>(Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = void Function<X1 extends X>(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t11.dart
index 3f23802..6dae478 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t11.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t11.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<X1 extends X>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function<X1 extends X>(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = void Function<X1 extends X>(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t12.dart
index dd8c0e4..091e63d 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t12.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t12.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<Y1 extends Y>(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function<Y1 extends Y>(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = void Function<Y1 extends Y>(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t13.dart
index 25265ad..01ec3b0 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t13.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t13.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<Y1 extends Y>(X, Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function<Y1 extends Y>(X, Y)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = void Function<Y1 extends Y>(X, Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t14.dart
index ac89f77..c9f01aa 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t14.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t14.dart
@@ -40,23 +40,33 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function(X)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function(X)]
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = void Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t15.dart
index bff917b..d536051 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t15.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t15.dart
@@ -40,23 +40,33 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function(Y)]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function(Y)
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = void Function(Y);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t16.dart
index 01ad3d2..1c18cdc 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t16.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// X Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = X Function()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -156,4 +156,7 @@
   F<G<A<dynamic>, dynamic>> target22 = fsource;
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t17.dart
index 55ceeeb..f106f1a 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t17.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// Y Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = Y Function()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -151,4 +151,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t18.dart
index b51ad81..52af6ac 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t18.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 class A<X> {}
@@ -78,4 +78,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t19.dart
index bf3d1c6..d33070d 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t19.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<X1 extends X>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function<X1 extends X>()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = void Function<X1 extends X>();
 
@@ -81,4 +81,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t20.dart
index cc8495a..22ab89a 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_06_t20.dart
@@ -40,15 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
-/// @description Checks that instantiate-to-bounds works correctly for [typedef]
-/// with two related parameters: [typedef G<X extends A<Y>, Y extends A<X>> =
-/// void Function<Y1 extends Y>()]
+///
+/// @description Checks that instantiate-to-bounds works correctly for typedef
+/// with two related parameters:
+/// typedef G<X extends A<Y>, Y extends A<X>> = void Function<Y1 extends Y>()
 ///
 /// @Issue 41963, 41964
 ///
 /// @author iarkh@unipro.ru
 
-
 class A<X> {}
 typedef G<X extends A<Y>, Y extends A<X>> = void Function<Y1 extends Y>();
 
@@ -81,4 +81,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t01.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t01.dart
index c6bcc9b..4fba3ce 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t01.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t01.dart
@@ -40,74 +40,80 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(); typedef G<X extends A<X>> = X Function()]
+/// typedef A<X> = X Function();
+/// typedef G<X extends A<X>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = X Function();
 typedef G<X extends A<X>> = X Function();
 
-main() {
-  G? source;
+main(G source) {
   var fsource = toF(source);
 
-  F<G<A<dynamic>>?>? target = fsource;
+  F<G<A<dynamic>>> target = fsource;
 
-  F<G<A<Null>>?>? target1 = fsource;
-//                          ^^^^^^^
+  F<G<A<Null>>> target1 = fsource;
+//                        ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<Never>>?>? target2 = fsource;
-//                           ^^^^^^^
+  F<G<A<Never>>> target2 = fsource;
+//                         ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<dynamic>>>?>? target3 = fsource;
-//                                ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<dynamic>>>>?>? target4 = fsource;
-//                                   ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<A<dynamic>>>>>?>? target5 = fsource;
-//                                      ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<Never>>>?>? target6 = fsource;
+  F<G<A<A<dynamic>>>> target3 = fsource;
 //                              ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<Never>>>>?>? target7 = fsource;
+  F<G<A<A<A<dynamic>>>>> target4 = fsource;
 //                                 ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<A<Never>>>>>?>? target8 = fsource;
+  F<G<A<A<A<A<dynamic>>>>>> target5 = fsource;
 //                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<Null>>>?>? target9 = fsource;
-//                             ^^^^^^^
+  F<G<A<A<Never>>>> target6 = fsource;
+//                            ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<Null>>>>?>? target10 = fsource;
-//                                 ^^^^^^^
+  F<G<A<A<A<Never>>>>> target7 = fsource;
+//                               ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<A<Null>>>>>?>? target11 = fsource;
-//                                    ^^^^^^^
+  F<G<A<A<A<A<Never>>>>>> target8 = fsource;
+//                                  ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+
+  F<G<A<A<Null>>>> target9 = fsource;
+//                           ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<Null>>>>> target10 = fsource;
+//                               ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<A<Null>>>>>> target11 = fsource;
+//                                  ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t02.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t02.dart
index 3f5001c..8c3f486 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t02.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t02.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
 /// typedef A<X> = void Function(X);
 /// typedef G<X extends A<X>> = X Function()
+///
 /// @Issue 34689
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function(X);
@@ -113,5 +114,7 @@
 // [cfe] unspecified
 }
 
-main() {}
-
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t03.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t03.dart
index 3b0c05c..1448ef7 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t03.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t03.dart
@@ -40,22 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(X); typedef G<X extends A<X>> = X Function()]
+/// typedef A<X> = X Function(X);
+/// typedef G<X extends A<X>> = X Function()
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 typedef A<X> = X Function(X);
 typedef G<X extends A<X>> = X Function();
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t04.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t04.dart
index eab1bd9..ba13d5f 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t04.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t04.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(); typedef G<X extends A<X>> = X Function()]
+/// typedef A<X> = void Function();
+/// typedef G<X extends A<X>> = X Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function();
@@ -63,4 +65,7 @@
   F<G<A<A<A<A<Never>>>>>> target8 = fsource;
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t05.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t05.dart
index 12baf6d..ab79b99 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t05.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t05.dart
@@ -39,75 +39,80 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+ ///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function();
-///  typedef G<X extends A<X>> = void Function(X)]
+/// typedef A<X> = X Function();
+/// typedef G<X extends A<X>> = void Function(X)
+ ///
 /// @Issue 34689, 34699
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = X Function();
 typedef G<X extends A<X>> = void Function(X);
 
-main() {
-  G? source;
+test(G source) {
   var fsource = toF(source);
-  F<G<A<Never>>?>? target = fsource;
+  F<G<A<Never>>> target = fsource;
 
-  F<G<A<Null>>?>? target0 = fsource;
-//                          ^^^^^^^
+  F<G<A<Null>>> target0 = fsource;
+//                        ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<dynamic>>?>? target1 = fsource;
-//                             ^^^^^^^
+  F<G<A<dynamic>>> target1 = fsource;
+//                           ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<dynamic>>>?>? target2 = fsource;
-//                                ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<dynamic>>>>?>? target3 = fsource;
-//                                   ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<A<dynamic>>>>>?>? target4 = fsource;
-//                                      ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<Null>>>?>? target5 = fsource;
-//                             ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<Null>>>>?>? target6 = fsource;
-//                                ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<A<A<Null>>>>>?>? target7 = fsource;
-//                                   ^^^^^^^
-// [analyzer] unspecified
-// [cfe] unspecified
-
-  F<G<A<A<Never>>>?>? target8 = fsource;
+  F<G<A<A<dynamic>>>> target2 = fsource;
 //                              ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<Never>>>>?>? target9 = fsource;
+  F<G<A<A<A<dynamic>>>>> target3 = fsource;
 //                                 ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
-  F<G<A<A<A<A<Never>>>>>?>? target10 = fsource;
-//                                     ^^^^^^^
+  F<G<A<A<A<A<dynamic>>>>>> target4 = fsource;
+//                                    ^^^^^^^
 // [analyzer] unspecified
 // [cfe] unspecified
+
+  F<G<A<A<Null>>>> target5 = fsource;
+//                           ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<Null>>>>> target6 = fsource;
+//                              ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<A<Null>>>>>> target7 = fsource;
+//                                 ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<Never>>>> target8 = fsource;
+//                            ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<Never>>>>> target9 = fsource;
+//                               ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  F<G<A<A<A<A<Never>>>>>> target10 = fsource;
+//                                   ^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
+main() {
+  G? source;
+  G == int;
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t06.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t06.dart
index 599b5e4..e64f744 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t06.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t06.dart
@@ -39,12 +39,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+ ///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(X);
-/// typedef G<X extends A<X>> = void Function(X)]
+/// typedef A<X> = void Function(X);
+/// typedef G<X extends A<X>> = void Function(X)
+ ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function(X);
@@ -111,4 +112,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t07.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t07.dart
index 4a2a25e..208c483 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t07.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t07.dart
@@ -40,21 +40,36 @@
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(X);
-///   typedef G<X extends A<X>> = void Function(X)]
+/// typedef A<X> = X Function(X);
+/// typedef G<X extends A<X>> = void Function(X)
+///
+/// After the type bounds checks in type literals enabling
+/// (see https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a
+/// compile time error because the type literal is expanded into the type which
+/// is not well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 typedef A<X> = X Function(X);
 typedef G<X extends A<X>> = void Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+  G == int;
+//^
 // [analyzer] unspecified
 // [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t08.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t08.dart
index 8406dd0..a06d426 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t08.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t08.dart
@@ -39,11 +39,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+ ///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// typedef A<X> = void Function(); typedef G<X extends A<X>> = void Function(X)
+/// typedef A<X> = void Function();
+ /// typedef G<X extends A<X>> = void Function(X)
+ ///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function();
@@ -66,4 +68,7 @@
   F<G<A<A<A<A<Null>>>>>> target10 = fsource;
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t09.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t09.dart
index 6f37361..d16469b 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t09.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t09.dart
@@ -40,12 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// typedef A<X> = X Function(); typedef G<X extends A<X>> = X Function(X)
+/// typedef A<X> = X Function();
+/// typedef G<X extends A<X>> = X Function(X)
+///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = X Function();
@@ -112,4 +114,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t10.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t10.dart
index f28b8f2..df09424 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t10.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t10.dart
@@ -40,12 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(X); typedef G<X extends A<X>> = X Function(X)]
+/// typedef A<X> = void Function(X);
+/// typedef G<X extends A<X>> = X Function(X)
+///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function(X);
@@ -112,4 +114,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t11.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t11.dart
index e927a01..6c711cd 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t11.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t11.dart
@@ -40,8 +40,15 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = X Function(X); typedef G<X extends A<X>> = X Function(X)]
+/// typedef A<X> = X Function(X);
+/// typedef G<X extends A<X>> = X Function(X)
+///
+/// After the type bounds checks in type literals enabling (see
+/// https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a compile
+/// time error because the type literal is expanded into the type which is not
+/// well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
@@ -52,10 +59,20 @@
 typedef A<X> = X Function(X);
 typedef G<X extends A<X>> = X Function(X);
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t12.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t12.dart
index f986709..6c06619 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t12.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t12.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(); typedef G<X extends A<X>> = X Function(X)]
+/// typedef A<X> = void Function();
+/// typedef G<X extends A<X>> = X Function(X)
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function();
@@ -67,4 +69,8 @@
   F<G<A<A<A<A<Null>>>>>> target10 = fsource;
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t13.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t13.dart
index f25d5f7..6f066d4 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t13.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t13.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
 /// typedef A<X> = X Function(); typedef G<X extends A<X>> = void Function()
+///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = X Function();
@@ -85,4 +86,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t14.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t14.dart
index 8c21999..dae7c96 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t14.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t14.dart
@@ -40,8 +40,10 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// typedef A<X> = void Function(X); typedef G<X extends A<X>> = void Function()
+/// typedef A<X> = void Function(X);
+/// typedef G<X extends A<X>> = void Function()
 ///
 /// To compute i2b on `G`, we have
 //    X, no variance
@@ -74,7 +76,6 @@
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function(X);
@@ -127,4 +128,7 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t15.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t15.dart
index a93fa10..965f337 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t15.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t15.dart
@@ -40,22 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// typedef A<X> = X Function(X); typedef G<X extends A<X>> = void Function()
+/// typedef A<X> = X Function(X);
+/// typedef G<X extends A<X>> = void Function()
+///
+/// After the type bounds checks in type literals enabling (see
+/// https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a compile
+/// time error because the type literal is expanded into the type which is not
+/// well-bounded.
 ///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 typedef A<X> = X Function(X);
 typedef G<X extends A<X>> = void Function();
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t16.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t16.dart
index 04c3775..e087531 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t16.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t16.dart
@@ -40,11 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// [typedef A<X> = void Function(); typedef G<X extends A<X>> = void Function()]
+/// typedef A<X> = void Function();
+/// typedef G<X extends A<X>> = void Function()
+///
 /// @author iarkh@unipro.ru
 
-
 import "../../../../Utils/expect.dart";
 
 typedef A<X> = void Function();
@@ -67,4 +69,8 @@
   F<G<A<A<A<A<Null>>>>>> target10 = fsource;
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t17.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t17.dart
index 362ccd9..199c33a 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t17.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t17.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// typedef typedef A<X> = X Function();
+/// typedef A<X> = X Function();
 /// typedef G<X extends A<X>> = void Function<Y extends X>()
+///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 typedef A<X> = X Function();
 typedef G<X extends A<X>> = void Function<Y extends X>();
 
@@ -64,4 +65,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t18.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t18.dart
index b7ea72a..52948f9 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t18.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t18.dart
@@ -40,13 +40,14 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// typedef typedef A<X> = void Function(X);
+/// typedef A<X> = void Function(X);
 /// typedef G<X extends A<X>> = void Function<Y extends X>()
+///
 /// @Issue 41963, 41964
 /// @author iarkh@unipro.ru
 
-
 typedef A<X> = void Function(X);
 typedef G<X extends A<X>> = void Function<Y extends X>();
 
@@ -64,4 +65,8 @@
 // [cfe] unspecified
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t19.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t19.dart
index 73f9d98..785cc1c 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t19.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t19.dart
@@ -40,23 +40,38 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
-/// typedef typedef A<X> = X Function(X);
+/// typedef A<X> = X Function(X);
 /// typedef G<X extends A<X>> = void Function<Y extends X>()
 ///
+/// After the type bounds checks in type literals enabling (see
+/// https://dart-review.googlesource.com/c/sdk/+/212290) [G] becomes a compile
+/// time error because the type literal is expanded into the type which is not
+/// well-bounded.
+///
 /// @Issue 41963, 41964, 44786
 /// @Issue dart-lang/language#1133
 ///
 /// @author iarkh@unipro.ru
 
-
 typedef A<X> = X Function(X);
 typedef G<X extends A<X>> = void Function<Y extends X>();
 
+test(G g) {
+//   ^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
+
 main() {
   G? source;
-//   ^^^^^^
+//^^
 // [analyzer] unspecified
 // [cfe] unspecified
 
+  G == int;
+//^
+// [analyzer] unspecified
+// [cfe] unspecified
 }
diff --git a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t20.dart b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t20.dart
index 2e49ade..b8e9bee 100644
--- a/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t20.dart
+++ b/LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_typedef_l1_t20.dart
@@ -40,12 +40,13 @@
 ///
 ///   3. Otherwise, (when no dependencies exist) terminate with the result
 ///   [<U1,m ..., Uk,m>].
+///
 /// @description Checks that instantiate-to-bounds works correctly for
 /// typedef typedef A<X> = void Function();
 /// typedef G<X extends A<X>> = void Function<Y extends X>()
+///
 /// @author iarkh@unipro.ru
 
-
 typedef A<X> = void Function();
 typedef G<X extends A<X>> = void Function<Y extends X>();
 
@@ -53,4 +54,8 @@
   void Function<X extends void Function()>() target = source;
 }
 
-main() {}
+main() {
+  G? source;
+  G == int;
+}
+