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

class C extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method g() → core::bool
    return true;
}
static field core::bool x = self::f().{self::C::g}();
static method f() → self::C
  return null;
static method main() → dynamic {}
