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

abstract class B extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  abstract method foo() → void;
}
abstract class C extends self::B {
  synthetic constructor •() → void
    : super self::B::•()
    ;
  abstract method bar() → void;
}
static method f<T extends self::B>(self::f::T a) → void {
  if(a is core::String) {
    a.{self::B::foo}();
  }
  if(a is self::C) {
    a{self::f::T extends self::C}.{self::C::bar}();
  }
}
static method main() → dynamic {}
