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

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