library;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;

import "package:expect/expect.dart";

class A extends core::Object {
  static field dynamic _redirecting# = <dynamic>[self::A::foo];
  constructor •() → self::A
    : super core::Object::•() {}
  static factory foo() → self::A
    let dynamic #redirecting_factory = self::C::bar in invalid-expression;
  method m() → core::int {}
}
class C extends self::A {
  static field dynamic _redirecting# = <dynamic>[self::C::bar];
  constructor •() → self::C
    : super self::A::•() {}
  static factory bar() → self::C
    let dynamic #redirecting_factory = self::D::• in invalid-expression;
  method m() → core::int {
    return 1;
  }
}
class D extends self::C {
  synthetic constructor •() → self::D
    : super self::C::•()
    ;
  method m() → core::int {
    return 2;
  }
}
static method main() → dynamic {
  self::A a = new self::D::•();
  exp::Expect::equals(2, a.{self::A::m}());
}
