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

class A<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends core::Object {
  constructor •(self::A::T% t, self::A::S% s) → self::A<self::A::T%, self::A::S%>
    ;
  static factory redir<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(self::A::redir::T% t, self::A::redir::S% s) → self::A<self::A::redir::T%, self::A::redir::S%> /* redirection-target: self::A::•<self::A::redir::T%, self::A::redir::S%>*/
    return new self::A::•<self::A::redir::T%, self::A::redir::S%>(t, s);
}
static method main() → dynamic
  ;
