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

class C extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method m() → dynamic {
    core::print("Called m");
  }
  method testC() → dynamic {
    this.{self::C::m}();
  }
}
class D extends self::C {
  synthetic constructor •() → void
    : super self::C::•()
    ;
  method testD() → dynamic {
    this.{self::C::m}();
  }
}
static method main() → dynamic {
  new self::C::•().testC();
  new self::D::•().testD();
}
