library;
//
// Problems in library:
//
// pkg/front_end/testcases/regress/issue_35266.dart:8:11: Error: 'B.foo' is already declared in this scope.
//   factory B.foo() = B<T>;
//           ^^^^^
// pkg/front_end/testcases/regress/issue_35266.dart:7:11: Context: Previous declaration of 'B.foo'.
//   factory B.foo() = B<T>;
//           ^^^^^
//
// pkg/front_end/testcases/regress/issue_35266.dart:13:21: Error: Can't use 'B.foo' because it is declared more than once.
//   factory C.bar() = B<K>.foo;
//                     ^
//
import self as self;
import "dart:core" as core;

class B<T extends core::Object* = dynamic> extends self::C<self::B::T*> {
  static field dynamic _redirecting# = <dynamic>[self::B::foo];
  constructor •() → self::B<self::B::T*>*
    : super self::C::•()
    ;
  static factory foo<T extends core::Object* = dynamic>() → self::B<self::B::foo::T*>*
    let<BottomType> #redirecting_factory = self::B::• in let self::B::foo::T* #typeArg0 = null in invalid-expression;
}
class C<K extends core::Object* = dynamic> extends core::Object {
  static field dynamic _redirecting# = <dynamic>[self::C::bar];
  constructor •() → self::C<self::C::K*>*
    : super core::Object::•()
    ;
  static factory bar<K extends core::Object* = dynamic>() → self::C<self::C::bar::K*>*
    let core::String* #redirecting_factory = "B.foo" in invalid-expression;
}
static method main() → dynamic {
  invalid-expression "pkg/front_end/testcases/regress/issue_35266.dart:17:7: Error: Method not found: 'B.foo'.
  new C.bar();
      ^";
}
