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

class C extends core::Object {
  field core::int* field;
  synthetic constructor •() → self::C*
    ;
  get getter() → core::int*
    ;
  method function() → core::int*
    ;
}
static field self::C* c;
static field core::int* field_ref;
static field core::int* getter_ref;
static field () →* core::int* function_ref;
static field core::List<core::int*>* field_ref_list;
static field core::List<core::int*>* getter_ref_list;
static field core::List<() →* core::int*>* function_ref_list;
static method main() → dynamic
  ;
