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

class A extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
}
class B extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
}
class C extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
}
class D extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
}
static const field dynamic #errors = const <dynamic>["pkg/front_end/testcases/cycles.dart:5:7: Error: 'A' is a supertype of itself via 'B', 'C'.
class A implements C {}
      ^", "pkg/front_end/testcases/cycles.dart:7:7: Error: 'B' is a supertype of itself via 'A', 'C'.
class B extends A {}
      ^", "pkg/front_end/testcases/cycles.dart:9:7: Error: 'C' is a supertype of itself via 'A', 'B'.
class C extends B implements D {}
      ^"]/* from null */;
static method main() → dynamic {
  core::print(new self::A::•());
  core::print(new self::B::•());
  core::print(new self::C::•());
  core::print(new self::D::•());
}
