library;
//
// Problems in library:
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:39:7: Error: A value of type 'C' can't be assigned to a variable of type 'Object' because 'C' is nullable and 'Object' isn't.
//  - 'Object' is from 'dart:core'.
//   o = c; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:41:7: Error: A value of type 'D2' can't be assigned to a variable of type 'Object' because 'D2' is nullable and 'Object' isn't.
//  - 'Object' is from 'dart:core'.
//   o = d2; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:44:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'Object' because 'G<T1>' is nullable and 'Object' isn't.
//  - 'Object' is from 'dart:core'.
//   o = g1; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:45:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'Object' because 'G<T2>' is nullable and 'Object' isn't.
//  - 'Object' is from 'dart:core'.
//   o = g2; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:48:7: Error: A value of type 'Object' can't be assigned to a variable of type 'A'.
//  - 'Object' is from 'dart:core'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   a = o; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:51:7: Error: A value of type 'C' can't be assigned to a variable of type 'A'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   a = c; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:52:7: Error: A value of type 'D' can't be assigned to a variable of type 'A'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   a = d; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:55:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'A'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   a = g1; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:56:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'A'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   a = g2; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:58:7: Error: A value of type 'Object' can't be assigned to a variable of type 'B'.
//  - 'Object' is from 'dart:core'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   b = o; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:59:7: Error: A value of type 'A' can't be assigned to a variable of type 'B'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   b = a; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:61:7: Error: A value of type 'C' can't be assigned to a variable of type 'B'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   b = c; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:62:7: Error: A value of type 'D' can't be assigned to a variable of type 'B'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   b = d; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:63:7: Error: A value of type 'E' can't be assigned to a variable of type 'B'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   b = e; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:65:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'B'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   b = g1; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:66:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'B'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   b = g2; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:68:7: Error: A value of type 'Object' can't be assigned to a variable of type 'C'.
//  - 'Object' is from 'dart:core'.
//   c = o; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:69:7: Error: A value of type 'A' can't be assigned to a variable of type 'C'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   c = a; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:70:7: Error: A value of type 'B' can't be assigned to a variable of type 'C'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   c = b; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:72:7: Error: A value of type 'D' can't be assigned to a variable of type 'C'.
//   c = d; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:73:7: Error: A value of type 'E' can't be assigned to a variable of type 'C'.
//   c = e; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:74:7: Error: A value of type 'F' can't be assigned to a variable of type 'C'.
//   c = f; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:75:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'C'.
//   c = g1; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:76:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'C'.
//   c = g2; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:78:7: Error: A value of type 'Object' can't be assigned to a variable of type 'D'.
//  - 'Object' is from 'dart:core'.
//   d = o; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:79:7: Error: A value of type 'A' can't be assigned to a variable of type 'D'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   d = a; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:80:7: Error: A value of type 'B' can't be assigned to a variable of type 'D'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   d = b; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:81:7: Error: A value of type 'C' can't be assigned to a variable of type 'D'.
//   d = c; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:83:7: Error: A value of type 'E' can't be assigned to a variable of type 'D'.
//   d = e; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:84:7: Error: A value of type 'F' can't be assigned to a variable of type 'D'.
//   d = f; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:85:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'D'.
//   d = g1; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:86:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'D'.
//   d = g2; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:88:7: Error: A value of type 'Object' can't be assigned to a variable of type 'E'.
//  - 'Object' is from 'dart:core'.
//   e = o; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:89:7: Error: A value of type 'A' can't be assigned to a variable of type 'E'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   e = a; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:90:7: Error: A value of type 'B' can't be assigned to a variable of type 'E'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   e = b; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:91:7: Error: A value of type 'C' can't be assigned to a variable of type 'E'.
//   e = c; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:92:7: Error: A value of type 'D' can't be assigned to a variable of type 'E'.
//   e = d; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:95:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'E'.
//   e = g1; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:96:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'E'.
//   e = g2; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:98:7: Error: A value of type 'Object' can't be assigned to a variable of type 'F'.
//  - 'Object' is from 'dart:core'.
//   f = o; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:99:7: Error: A value of type 'A' can't be assigned to a variable of type 'F'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   f = a; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:100:7: Error: A value of type 'B' can't be assigned to a variable of type 'F'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   f = b; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:101:7: Error: A value of type 'C' can't be assigned to a variable of type 'F'.
//   f = c; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:102:7: Error: A value of type 'D' can't be assigned to a variable of type 'F'.
//   f = d; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:103:7: Error: A value of type 'E' can't be assigned to a variable of type 'F'.
//   f = e; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:105:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'F'.
//   f = g1; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:106:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'F'.
//   f = g2; // Error
//       ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:108:8: Error: A value of type 'Object' can't be assigned to a variable of type 'G<T1>'.
//  - 'Object' is from 'dart:core'.
//   g1 = o; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:109:8: Error: A value of type 'A' can't be assigned to a variable of type 'G<T1>'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   g1 = a; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:110:8: Error: A value of type 'B' can't be assigned to a variable of type 'G<T1>'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   g1 = b; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:111:8: Error: A value of type 'C' can't be assigned to a variable of type 'G<T1>'.
//   g1 = c; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:112:8: Error: A value of type 'D' can't be assigned to a variable of type 'G<T1>'.
//   g1 = d; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:113:8: Error: A value of type 'E' can't be assigned to a variable of type 'G<T1>'.
//   g1 = e; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:114:8: Error: A value of type 'F' can't be assigned to a variable of type 'G<T1>'.
//   g1 = f; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:116:8: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'G<T1>'.
//   g1 = g2; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:118:8: Error: A value of type 'Object' can't be assigned to a variable of type 'G<T2>'.
//  - 'Object' is from 'dart:core'.
//   g2 = o; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:119:8: Error: A value of type 'A' can't be assigned to a variable of type 'G<T2>'.
//  - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   g2 = a; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:120:8: Error: A value of type 'B' can't be assigned to a variable of type 'G<T2>'.
//  - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
//   g2 = b; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:121:8: Error: A value of type 'C' can't be assigned to a variable of type 'G<T2>'.
//   g2 = c; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:122:8: Error: A value of type 'D' can't be assigned to a variable of type 'G<T2>'.
//   g2 = d; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:123:8: Error: A value of type 'E' can't be assigned to a variable of type 'G<T2>'.
//   g2 = e; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:124:8: Error: A value of type 'F' can't be assigned to a variable of type 'G<T2>'.
//   g2 = f; // Error
//        ^
//
// pkg/front_end/testcases/extension_types/assign_interface_type.dart:125:8: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'G<T2>'.
//   g2 = g1; // Error
//        ^
//
import self as self;
import "dart:core" as core;

class A extends core::Object {
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
}
class B extends self::A {
  synthetic constructor •() → self::B
    : super self::A::•()
    ;
}
extension type C(core::Object? o) {
  abstract extension-type-member representation-field get o() → core::Object?;
  constructor • = self::C|constructor#;
  constructor tearoff • = self::C|constructor#_#new#tearOff;
}
extension type D(core::Object o) implements core::Object {
  abstract extension-type-member representation-field get o() → core::Object;
  constructor • = self::D|constructor#;
  constructor tearoff • = self::D|constructor#_#new#tearOff;
}
extension type D2(core::Object o) {
  abstract extension-type-member representation-field get o() → core::Object;
  constructor • = self::D2|constructor#;
  constructor tearoff • = self::D2|constructor#_#new#tearOff;
}
extension type E(self::B it) implements self::A {
  abstract extension-type-member representation-field get it() → self::B;
  constructor • = self::E|constructor#;
  constructor tearoff • = self::E|constructor#_#new#tearOff;
}
extension type F(self::B it) implements self::E /* erasure=self::B */, self::B {
  abstract extension-type-member representation-field get it() → self::B;
  constructor • = self::F|constructor#;
  constructor tearoff • = self::F|constructor#_#new#tearOff;
}
extension type G<T extends core::Object? = dynamic>(T% o) {
  abstract extension-type-member representation-field get o() → T%;
  constructor • = self::G|constructor#;
  constructor tearoff • = self::G|constructor#_#new#tearOff;
}
extension type G2<T extends core::Object>(T o) implements core::Object {
  abstract extension-type-member representation-field get o() → T;
  constructor • = self::G2|constructor#;
  constructor tearoff • = self::G2|constructor#_#new#tearOff;
}
static extension-type-member method C|constructor#(core::Object? o) → self::C% /* erasure=core::Object?, declared=! */ {
  lowered final self::C% /* erasure=core::Object?, declared=! */ #this = o;
  return #this;
}
static extension-type-member method C|constructor#_#new#tearOff(core::Object? o) → self::C% /* erasure=core::Object?, declared=! */
  return self::C|constructor#(o);
static extension-type-member method D|constructor#(core::Object o) → self::D /* erasure=core::Object */ {
  lowered final self::D /* erasure=core::Object */ #this = o;
  return #this;
}
static extension-type-member method D|constructor#_#new#tearOff(core::Object o) → self::D /* erasure=core::Object */
  return self::D|constructor#(o);
static extension-type-member method D2|constructor#(core::Object o) → self::D2% /* erasure=core::Object, declared=! */ {
  lowered final self::D2% /* erasure=core::Object, declared=! */ #this = o;
  return #this;
}
static extension-type-member method D2|constructor#_#new#tearOff(core::Object o) → self::D2% /* erasure=core::Object, declared=! */
  return self::D2|constructor#(o);
static extension-type-member method E|constructor#(self::B it) → self::E /* erasure=self::B */ {
  lowered final self::E /* erasure=self::B */ #this = it;
  return #this;
}
static extension-type-member method E|constructor#_#new#tearOff(self::B it) → self::E /* erasure=self::B */
  return self::E|constructor#(it);
static extension-type-member method F|constructor#(self::B it) → self::F /* erasure=self::B */ {
  lowered final self::F /* erasure=self::B */ #this = it;
  return #this;
}
static extension-type-member method F|constructor#_#new#tearOff(self::B it) → self::F /* erasure=self::B */
  return self::F|constructor#(it);
static extension-type-member method G|constructor#<T extends core::Object? = dynamic>(self::G|constructor#::T% o) → self::G<self::G|constructor#::T%>% /* erasure=self::G|constructor#::T%, declared=! */ {
  lowered final self::G<self::G|constructor#::T%>% /* erasure=self::G|constructor#::T%, declared=! */ #this = o;
  return #this;
}
static extension-type-member method G|constructor#_#new#tearOff<T extends core::Object? = dynamic>(self::G|constructor#_#new#tearOff::T% o) → self::G<self::G|constructor#_#new#tearOff::T%>% /* erasure=self::G|constructor#_#new#tearOff::T%, declared=! */
  return self::G|constructor#<self::G|constructor#_#new#tearOff::T%>(o);
static extension-type-member method G2|constructor#<T extends core::Object>(self::G2|constructor#::T o) → self::G2<self::G2|constructor#::T> /* erasure=self::G2|constructor#::T */ {
  lowered final self::G2<self::G2|constructor#::T> /* erasure=self::G2|constructor#::T */ #this = o;
  return #this;
}
static extension-type-member method G2|constructor#_#new#tearOff<T extends core::Object>(self::G2|constructor#_#new#tearOff::T o) → self::G2<self::G2|constructor#_#new#tearOff::T> /* erasure=self::G2|constructor#_#new#tearOff::T */
  return self::G2|constructor#<self::G2|constructor#_#new#tearOff::T>(o);
static method test<T1 extends core::Object? = dynamic, T2 extends self::A, T3 extends core::Object>(core::Object o, self::A a, self::B b, self::C% /* erasure=core::Object?, declared=! */ c, self::D /* erasure=core::Object */ d, self::D2% /* erasure=core::Object, declared=! */ d2, self::E /* erasure=self::B */ e, self::F /* erasure=self::B */ f, self::G<self::test::T1%>% /* erasure=self::test::T1%, declared=! */ g1, self::G<self::test::T2>% /* erasure=self::test::T2, declared=! */ g2, self::G2<self::test::T3> /* erasure=self::test::T3 */ g3) → dynamic {
  o = o;
  o = a;
  o = b;
  o = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:39:7: Error: A value of type 'C' can't be assigned to a variable of type 'Object' because 'C' is nullable and 'Object' isn't.
 - 'Object' is from 'dart:core'.
  o = c; // Error
      ^" in c as{TypeError} core::Object;
  o = d;
  o = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:41:7: Error: A value of type 'D2' can't be assigned to a variable of type 'Object' because 'D2' is nullable and 'Object' isn't.
 - 'Object' is from 'dart:core'.
  o = d2; // Error
      ^" in d2 as{TypeError} core::Object;
  o = e;
  o = f;
  o = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:44:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'Object' because 'G<T1>' is nullable and 'Object' isn't.
 - 'Object' is from 'dart:core'.
  o = g1; // Error
      ^" in g1 as{TypeError} core::Object;
  o = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:45:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'Object' because 'G<T2>' is nullable and 'Object' isn't.
 - 'Object' is from 'dart:core'.
  o = g2; // Error
      ^" in g2 as{TypeError} core::Object;
  o = g3;
  a = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:48:7: Error: A value of type 'Object' can't be assigned to a variable of type 'A'.
 - 'Object' is from 'dart:core'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  a = o; // Error
      ^" in o as{TypeError} self::A;
  a = a;
  a = b;
  a = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:51:7: Error: A value of type 'C' can't be assigned to a variable of type 'A'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  a = c; // Error
      ^" in c as{TypeError} self::A;
  a = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:52:7: Error: A value of type 'D' can't be assigned to a variable of type 'A'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  a = d; // Error
      ^" in d as{TypeError} self::A;
  a = e;
  a = f;
  a = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:55:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'A'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  a = g1; // Error
      ^" in g1 as{TypeError} self::A;
  a = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:56:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'A'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  a = g2; // Error
      ^" in g2 as{TypeError} self::A;
  b = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:58:7: Error: A value of type 'Object' can't be assigned to a variable of type 'B'.
 - 'Object' is from 'dart:core'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  b = o; // Error
      ^" in o as{TypeError} self::B;
  b = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:59:7: Error: A value of type 'A' can't be assigned to a variable of type 'B'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  b = a; // Error
      ^" in a as{TypeError} self::B;
  b = b;
  b = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:61:7: Error: A value of type 'C' can't be assigned to a variable of type 'B'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  b = c; // Error
      ^" in c as{TypeError} self::B;
  b = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:62:7: Error: A value of type 'D' can't be assigned to a variable of type 'B'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  b = d; // Error
      ^" in d as{TypeError} self::B;
  b = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:63:7: Error: A value of type 'E' can't be assigned to a variable of type 'B'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  b = e; // Error
      ^" in e as{TypeError} self::B;
  b = f;
  b = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:65:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'B'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  b = g1; // Error
      ^" in g1 as{TypeError} self::B;
  b = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:66:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'B'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  b = g2; // Error
      ^" in g2 as{TypeError} self::B;
  c = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:68:7: Error: A value of type 'Object' can't be assigned to a variable of type 'C'.
 - 'Object' is from 'dart:core'.
  c = o; // Error
      ^" in o as{TypeError} self::C% /* erasure=core::Object?, declared=! */;
  c = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:69:7: Error: A value of type 'A' can't be assigned to a variable of type 'C'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  c = a; // Error
      ^" in a as{TypeError} self::C% /* erasure=core::Object?, declared=! */;
  c = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:70:7: Error: A value of type 'B' can't be assigned to a variable of type 'C'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  c = b; // Error
      ^" in b as{TypeError} self::C% /* erasure=core::Object?, declared=! */;
  c = c;
  c = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:72:7: Error: A value of type 'D' can't be assigned to a variable of type 'C'.
  c = d; // Error
      ^" in d as{TypeError} self::C% /* erasure=core::Object?, declared=! */;
  c = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:73:7: Error: A value of type 'E' can't be assigned to a variable of type 'C'.
  c = e; // Error
      ^" in e as{TypeError} self::C% /* erasure=core::Object?, declared=! */;
  c = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:74:7: Error: A value of type 'F' can't be assigned to a variable of type 'C'.
  c = f; // Error
      ^" in f as{TypeError} self::C% /* erasure=core::Object?, declared=! */;
  c = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:75:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'C'.
  c = g1; // Error
      ^" in g1 as{TypeError} self::C% /* erasure=core::Object?, declared=! */;
  c = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:76:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'C'.
  c = g2; // Error
      ^" in g2 as{TypeError} self::C% /* erasure=core::Object?, declared=! */;
  d = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:78:7: Error: A value of type 'Object' can't be assigned to a variable of type 'D'.
 - 'Object' is from 'dart:core'.
  d = o; // Error
      ^" in o as{TypeError} self::D /* erasure=core::Object */;
  d = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:79:7: Error: A value of type 'A' can't be assigned to a variable of type 'D'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  d = a; // Error
      ^" in a as{TypeError} self::D /* erasure=core::Object */;
  d = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:80:7: Error: A value of type 'B' can't be assigned to a variable of type 'D'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  d = b; // Error
      ^" in b as{TypeError} self::D /* erasure=core::Object */;
  d = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:81:7: Error: A value of type 'C' can't be assigned to a variable of type 'D'.
  d = c; // Error
      ^" in c as{TypeError} self::D /* erasure=core::Object */;
  d = d;
  d = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:83:7: Error: A value of type 'E' can't be assigned to a variable of type 'D'.
  d = e; // Error
      ^" in e as{TypeError} self::D /* erasure=core::Object */;
  d = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:84:7: Error: A value of type 'F' can't be assigned to a variable of type 'D'.
  d = f; // Error
      ^" in f as{TypeError} self::D /* erasure=core::Object */;
  d = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:85:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'D'.
  d = g1; // Error
      ^" in g1 as{TypeError} self::D /* erasure=core::Object */;
  d = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:86:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'D'.
  d = g2; // Error
      ^" in g2 as{TypeError} self::D /* erasure=core::Object */;
  e = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:88:7: Error: A value of type 'Object' can't be assigned to a variable of type 'E'.
 - 'Object' is from 'dart:core'.
  e = o; // Error
      ^" in o as{TypeError} self::E /* erasure=self::B */;
  e = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:89:7: Error: A value of type 'A' can't be assigned to a variable of type 'E'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  e = a; // Error
      ^" in a as{TypeError} self::E /* erasure=self::B */;
  e = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:90:7: Error: A value of type 'B' can't be assigned to a variable of type 'E'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  e = b; // Error
      ^" in b as{TypeError} self::E /* erasure=self::B */;
  e = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:91:7: Error: A value of type 'C' can't be assigned to a variable of type 'E'.
  e = c; // Error
      ^" in c as{TypeError} self::E /* erasure=self::B */;
  e = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:92:7: Error: A value of type 'D' can't be assigned to a variable of type 'E'.
  e = d; // Error
      ^" in d as{TypeError} self::E /* erasure=self::B */;
  e = e;
  e = f;
  e = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:95:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'E'.
  e = g1; // Error
      ^" in g1 as{TypeError} self::E /* erasure=self::B */;
  e = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:96:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'E'.
  e = g2; // Error
      ^" in g2 as{TypeError} self::E /* erasure=self::B */;
  f = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:98:7: Error: A value of type 'Object' can't be assigned to a variable of type 'F'.
 - 'Object' is from 'dart:core'.
  f = o; // Error
      ^" in o as{TypeError} self::F /* erasure=self::B */;
  f = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:99:7: Error: A value of type 'A' can't be assigned to a variable of type 'F'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  f = a; // Error
      ^" in a as{TypeError} self::F /* erasure=self::B */;
  f = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:100:7: Error: A value of type 'B' can't be assigned to a variable of type 'F'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  f = b; // Error
      ^" in b as{TypeError} self::F /* erasure=self::B */;
  f = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:101:7: Error: A value of type 'C' can't be assigned to a variable of type 'F'.
  f = c; // Error
      ^" in c as{TypeError} self::F /* erasure=self::B */;
  f = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:102:7: Error: A value of type 'D' can't be assigned to a variable of type 'F'.
  f = d; // Error
      ^" in d as{TypeError} self::F /* erasure=self::B */;
  f = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:103:7: Error: A value of type 'E' can't be assigned to a variable of type 'F'.
  f = e; // Error
      ^" in e as{TypeError} self::F /* erasure=self::B */;
  f = f;
  f = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:105:7: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'F'.
  f = g1; // Error
      ^" in g1 as{TypeError} self::F /* erasure=self::B */;
  f = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:106:7: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'F'.
  f = g2; // Error
      ^" in g2 as{TypeError} self::F /* erasure=self::B */;
  g1 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:108:8: Error: A value of type 'Object' can't be assigned to a variable of type 'G<T1>'.
 - 'Object' is from 'dart:core'.
  g1 = o; // Error
       ^" in o as{TypeError} Never;
  g1 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:109:8: Error: A value of type 'A' can't be assigned to a variable of type 'G<T1>'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  g1 = a; // Error
       ^" in a as{TypeError} Never;
  g1 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:110:8: Error: A value of type 'B' can't be assigned to a variable of type 'G<T1>'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  g1 = b; // Error
       ^" in b as{TypeError} Never;
  g1 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:111:8: Error: A value of type 'C' can't be assigned to a variable of type 'G<T1>'.
  g1 = c; // Error
       ^" in c as{TypeError} Never;
  g1 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:112:8: Error: A value of type 'D' can't be assigned to a variable of type 'G<T1>'.
  g1 = d; // Error
       ^" in d as{TypeError} Never;
  g1 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:113:8: Error: A value of type 'E' can't be assigned to a variable of type 'G<T1>'.
  g1 = e; // Error
       ^" in e as{TypeError} Never;
  g1 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:114:8: Error: A value of type 'F' can't be assigned to a variable of type 'G<T1>'.
  g1 = f; // Error
       ^" in f as{TypeError} Never;
  g1 = g1;
  g1 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:116:8: Error: A value of type 'G<T2>' can't be assigned to a variable of type 'G<T1>'.
  g1 = g2; // Error
       ^" in g2 as{TypeError} Never;
  g2 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:118:8: Error: A value of type 'Object' can't be assigned to a variable of type 'G<T2>'.
 - 'Object' is from 'dart:core'.
  g2 = o; // Error
       ^" in o as{TypeError} Never;
  g2 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:119:8: Error: A value of type 'A' can't be assigned to a variable of type 'G<T2>'.
 - 'A' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  g2 = a; // Error
       ^" in a as{TypeError} Never;
  g2 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:120:8: Error: A value of type 'B' can't be assigned to a variable of type 'G<T2>'.
 - 'B' is from 'pkg/front_end/testcases/extension_types/assign_interface_type.dart'.
  g2 = b; // Error
       ^" in b as{TypeError} Never;
  g2 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:121:8: Error: A value of type 'C' can't be assigned to a variable of type 'G<T2>'.
  g2 = c; // Error
       ^" in c as{TypeError} Never;
  g2 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:122:8: Error: A value of type 'D' can't be assigned to a variable of type 'G<T2>'.
  g2 = d; // Error
       ^" in d as{TypeError} Never;
  g2 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:123:8: Error: A value of type 'E' can't be assigned to a variable of type 'G<T2>'.
  g2 = e; // Error
       ^" in e as{TypeError} Never;
  g2 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:124:8: Error: A value of type 'F' can't be assigned to a variable of type 'G<T2>'.
  g2 = f; // Error
       ^" in f as{TypeError} Never;
  g2 = invalid-expression "pkg/front_end/testcases/extension_types/assign_interface_type.dart:125:8: Error: A value of type 'G<T1>' can't be assigned to a variable of type 'G<T2>'.
  g2 = g1; // Error
       ^" in g1 as{TypeError} Never;
  g2 = g2;
}
