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

class A extends core::Object {
  default constructor •() → void
    ;
}
class C extends core::Object {
  field self::A aField;
  default constructor •() → void
    ;
  set aSetter(self::A value) → void
    ;
  method test() → void
    ;
}
static field self::A aTopLevel;
static method f<T extends core::Object>() → self::f::T
  ;
static set aTopLevelSetter(self::A value) → void
  ;
static method main() → dynamic
  ;
