library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue53560.dart:9:3: Error: 'B' is already declared in this scope.
//   B() : this._(1);
//   ^
// pkg/front_end/testcases/general/issue53560.dart:8:3: Context: Previous declaration of 'B'.
//   B(_);
//   ^
//
// pkg/front_end/testcases/general/issue53560.dart:9:14: Error: Couldn't find constructor 'B._'.
//   B() : this._(1);
//              ^
//
// pkg/front_end/testcases/general/issue53560.dart:13:29: Error: Can't use 'B' because it is declared more than once.
//   final A<double> doubles = A();
//                             ^
//
import self as self;
import "dart:core" as core;

typedef A<invariant X extends core::Object? = dynamic> = self::B<X%, (X%) → dynamic>;
class B<T extends core::Object? = dynamic, Invariance extends (self::B::T%) → dynamic = (Never) → dynamic> extends core::Object {
  constructor •(dynamic _) → self::B<self::B::T%, self::B::Invariance>
    : super core::Object::•()
    ;
}
static method test() → dynamic {
  final self::B<core::double, (core::double) → dynamic> doubles = invalid-expression "pkg/front_end/testcases/general/issue53560.dart:13:29: Error: Can't use 'B' because it is declared more than once.
  final A<double> doubles = A();
                            ^";
}
static method _#A#new#tearOff<invariant X extends core::Object? = dynamic>(dynamic _) → self::B<self::_#A#new#tearOff::X%, (self::_#A#new#tearOff::X%) → dynamic>
  return new self::B::•<self::_#A#new#tearOff::X%, (self::_#A#new#tearOff::X%) → dynamic>(_);
