library;
import self as self;
import "dart:core" as core;

typedef Alias = self::Class;
typedef ComplexAlias<unrelated X extends core::Object? = dynamic> = self::Class;
typedef GenericAlias<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> = self::GenericClass<X%, Y%>;
class Class extends core::Object /*hasConstConstructor*/  {
  const constructor •([dynamic a = #C1]) → self::Class
    : super core::Object::•()
    ;
  const constructor named({dynamic a = #C1, dynamic b = #C1}) → self::Class
    : super core::Object::•()
    ;
}
class GenericClass<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
  const constructor •() → self::GenericClass<self::GenericClass::X%, self::GenericClass::Y%>
    : super core::Object::•()
    ;
  const constructor named({dynamic a = #C1, dynamic b = #C1}) → self::GenericClass<self::GenericClass::X%, self::GenericClass::Y%>
    : super core::Object::•()
    ;
}
@#C2
@#C2
@#C2
@#C2
@#C2
static method type() → void {}
static method _#ComplexAlias#new#tearOff<unrelated X extends core::Object? = dynamic>([dynamic a = #C1]) → self::Class
  return new self::Class::•(a);
static method _#ComplexAlias#named#tearOff<unrelated X extends core::Object? = dynamic>({dynamic a = #C1, dynamic b = #C1}) → self::Class
  return new self::Class::named(a: a, b: b);

constants  {
  #C1 = null
  #C2 = self::Class {}
}


Constructor coverage from constants:
org-dartlang-testcase:///issue55755.dart:
- Class.named (from org-dartlang-testcase:///issue55755.dart:7:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
- Class. (from org-dartlang-testcase:///issue55755.dart:6:9)
- GenericClass. (from org-dartlang-testcase:///issue55755.dart:11:9)
- GenericClass.named (from org-dartlang-testcase:///issue55755.dart:12:9)
