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

class C extends core::Object {
  field dynamic y = null;
  synthetic constructor •() → self::C*
    : super core::Object::•()
    ;
  get x() → dynamic
    return null;
  method test() → void {
    dynamic v1 = this.{self::C::x};
    dynamic v2 = this.{self::C::x};
    dynamic v3 = this.{self::C::y};
    dynamic v4 = this.{self::C::y};
  }
}
static method test(self::C* c, dynamic d) → void {
  dynamic v1 = c.{self::C::x};
  dynamic v2 = c.{self::C::y};
  dynamic v3 = d.x;
}
static method main() → dynamic {}
