library test;
import self as self;
import "dart:core" as core;

class C extends core::Object {
  constructor expressionOnly() → self::C*
    : assert(self::f<core::bool*>()), super core::Object::•()
    ;
  constructor expressionAndMessage() → self::C*
    : assert(self::f<core::bool*>(), self::f<dynamic>()), super core::Object::•()
    ;
}
static method f<T extends core::Object* = dynamic>() → self::f::T*
  return null;
static method main() → dynamic {
  assert(self::f<core::bool*>());
  assert(self::f<core::bool*>(), self::f<dynamic>());
}
