library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/issue43716b.dart:17:7: Error: The argument type 'int' can't be assigned to the parameter type 'Never'.
//     z(42); // Error.
//       ^
//
import self as self;
import "dart:core" as core;

class C<X extends (self::C::X%) →? void = (Never) →? void> extends core::Object {
  generic-covariant-impl field self::C::X% x;
  constructor •(self::C::X% x) → self::C<self::C::X%>
    : self::C::x = x, super core::Object::•()
    ;
  method m() → void {
    (Never) →? void z = self::b ?{(Never) →? void} this.{self::C::x}{self::C::X%} : #C1;
    if(z == null)
      return;
    z{(Never) → void}(invalid-expression "pkg/front_end/testcases/nnbd/issue43716b.dart:17:7: Error: The argument type 'int' can't be assigned to the parameter type 'Never'.
    z(42); // Error.
      ^" in 42 as{TypeError,ForNonNullableByDefault} Never){(Never) → void};
  }
}
static field core::bool b = true;
static method f(core::Object o) → void {}
static method main() → dynamic {}

constants  {
  #C1 = static-tearoff self::f
}
