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

abstract class A<T extends core::Object? = dynamic> extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
  static factory •<T extends core::Object? = dynamic>(self::A::•::T% value) → self::A<self::A::•::T%>
    return new self::_A::•<self::A::•::T%>(value);
}
class _A<T extends core::Object? = dynamic> extends core::Object implements self::A<self::_A::T%> {
  constructor •(self::_A::T% value) → self::_A<self::_A::T%>
    ;
}
abstract class B<T extends core::Object? = dynamic> extends core::Object {
  static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
  static factory •<T extends core::Object? = dynamic>(core::int value) → self::B<self::B::•::T%>
    return new self::_B::•<self::B::•::T%>(value);
}
class _B<T extends core::Object? = dynamic> extends core::Object implements self::B<self::_B::T%> {
  constructor •(core::int value) → self::_B<self::_B::T%>
    ;
}
static method main() → dynamic
  ;
