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

class C extends core::Object {
  field core::int field = 0;
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  get getter() → core::int
    return 0;
  method function() → core::int
    return 0;
}
static field self::C c = new self::C::•();
static field core::int field_ref = self::c.{self::C::field}{core::int};
static field core::int getter_ref = self::c.{self::C::getter}{core::int};
static field () → core::int function_ref = self::c.{self::C::function}{() → core::int};
static field core::List<core::int> field_ref_list = <core::int>[self::c.{self::C::field}{core::int}];
static field core::List<core::int> getter_ref_list = <core::int>[self::c.{self::C::getter}{core::int}];
static field core::List<() → core::int> function_ref_list = <() → core::int>[self::c.{self::C::function}{() → core::int}];
static method main() → dynamic {}
