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

class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  method m<T extends core::Object? = dynamic>(self::C::m::T% x) → self::C::m::T%
    return x;
}
class D extends self::C {
  synthetic constructor •() → self::D
    : super self::C::•()
    ;
  method m<S extends core::Object? = dynamic>(self::D::m::S% x) → self::D::m::S%
    return x;
}
static method main() → dynamic {
  core::int y = new self::D::•().{self::D::m}<core::int>(42){(core::int) → core::int};
  core::print(y);
}
