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

class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
  const constructor •() → self::C<self::C::T%>
    : super core::Object::•()
    ;
}
static method f<T extends core::Object? = dynamic>() → self::f::T%
  return throw "";
static method test(self::C<core::int> x) → void {
  #L1:
  switch(x) /* self::C<core::int> */ {
    #L2:
    case #C1:
      {
        core::int y = 0;
        break #L1;
      }
    #L3:
    default:
      {
        core::int y = 0;
        break #L1;
      }
  }
}
static method main() → dynamic {}

constants  {
  #C1 = self::C<core::int> {}
}


Constructor coverage from constants:
org-dartlang-testcase:///switch.dart:
- C. (from org-dartlang-testcase:///switch.dart:11:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
