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

class Class1 extends core::Object {
  final field core::int field;
  constructor •([core::int field = 42]) → self::Class1
    ;
  static method _#new#tearOff([has-declared-initializer core::int field]) → self::Class1
    return new self::Class1::•(field);
}
class Class2 extends core::Object {
  final field core::int field;
  constructor •({core::int field = 42}) → self::Class2
    ;
  static method _#new#tearOff({has-declared-initializer core::int field}) → self::Class2
    return new self::Class2::•(field: field);
}
static final field core::bool inSoundMode;
static method main() → dynamic
  ;
static method testDefaultValues() → void
  ;
static method expect(dynamic expected, dynamic actual) → dynamic
  ;
static method throws(() → dynamic f, {has-declared-initializer core::bool inSoundModeOnly}) → dynamic
  ;
