library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class A extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[self::A::redirectingFactory, self::A::redirectingFactoryChild, self::A::redirectingTwice]/*isLegacy*/;
  constructor •() → self::A
    ;
  static factory redirectingFactory() → self::A
    return new self::A::•();
  static factory redirectingFactoryChild() → self::A
    return new self::B::•();
  static factory redirectingTwice() → self::A
    return self::A::redirectingFactory();
}
class B extends self::A {
  synthetic constructor •() → self::B
    ;
}
static method test() → dynamic
  ;
static method main() → dynamic
  ;
