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

class A extends core::Object {
  field core::int zero;
  field core::int? zeroOrNull;
  constructor •(core::int zero, [core::int? zeroOrNull = null]) → self::A
    ;
}
class Foo extends core::Object {
  field self::Bar? bar;
  constructor •(self::Bar? bar) → self::Foo
    ;
  operator [](core::int? index) → self::Bar?
    ;
}
class Bar extends core::Object {
  field core::int baz;
  constructor •(core::int baz) → self::Bar
    ;
  operator [](core::int index) → core::int
    ;
  operator ==(core::Object other) → core::bool
    ;
}
static method test1(self::A? a) → core::int?
  ;
static method test2(self::A? a) → core::int?
  ;
static method test3(self::A? a) → core::bool?
  ;
static method test4(self::A? a) → core::bool?
  ;
static method test5(self::Foo? foo) → self::Bar?
  ;
static method test6(self::Foo? foo) → core::int?
  ;
static method test7(self::Foo? foo, core::int baz) → core::int?
  ;
static method test8(self::Foo? foo, core::int? bar) → self::Bar?
  ;
static method test9(self::Foo? foo, core::int? bar) → core::int?
  ;
static method test10(self::Foo? foo, core::int? bar, core::int baz) → dynamic
  ;
static method main() → dynamic
  ;
static method expect(dynamic expected, dynamic actual) → dynamic
  ;
static method throws(() → void f) → dynamic
  ;
