library redirecting_factory_constructors.chain_test;
import self as self;
import "dart:core" as core;

class A extends core::Object {
  static field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
  constructor •() → self::A*
    : super core::Object::•()
    ;
  static factory first() → self::A*
    let<BottomType> #redirecting_factory = self::A::• in invalid-expression;
  static factory second() → self::A*
    let () →* self::A* #redirecting_factory = self::A::first in invalid-expression;
}
static method main() → dynamic {
  new self::A::•();
}
