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) → void
    ;
}
static method main() → dynamic
  ;
