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

class W extends core::Object {
  field core::String native;
  constructor •() → self::W
    ;
}
class X extends core::Object {
  synthetic constructor •() → self::X
    ;
  method native() → core::String
    ;
}
abstract class Y1 extends core::Object {
  synthetic constructor •() → self::Y1
    ;
  abstract get native() → core::String;
}
class Y2 extends self::Y1 {
  synthetic constructor •() → self::Y2
    ;
  @core::override
  get native() → core::String
    ;
}
class Z extends core::Object {
  field core::String f;
  synthetic constructor •() → self::Z
    ;
  set native(core::String s) → dynamic
    ;
}
static method main() → dynamic
  ;
