library test /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class C<T extends core::Object? = dynamic> extends core::Object {
  constructor optional(([self::C::T%]) → void func) → self::C<self::C::T%>
    : super core::Object::•() {}
  constructor named(({x: self::C::T%}) → void func) → self::C<self::C::T%>
    : super core::Object::•() {}
}
static method optional_toplevel([dynamic x = #C2]) → void {}
static method named_toplevel({dynamic x = #C2}) → void {}
static method main() → dynamic {
  function optional_local([dynamic x = #C2]) → void {}
  function named_local({dynamic x = #C2}) → void {}
  self::C<dynamic> c_optional_toplevel = new self::C::optional<dynamic>(#C3);
  self::C<dynamic> c_named_toplevel = new self::C::named<dynamic>(#C4);
  self::C<dynamic> c_optional_local = new self::C::optional<dynamic>(optional_local);
  self::C<dynamic> c_named_local = new self::C::named<dynamic>(named_local);
  self::C<core::Object?> c_optional_closure = new self::C::optional<core::Object?>(([core::Object? x = #C2]) → void {});
  self::C<core::Object?> c_named_closure = new self::C::named<core::Object?>(({core::Object? x = #C2}) → void {});
}

constants  {
  #C1 = 0
  #C2 = <core::int*>[#C1]
  #C3 = static-tearoff self::optional_toplevel
  #C4 = static-tearoff self::named_toplevel
}
