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

abstract class I extends core::Object {
}
abstract class A extends core::Object implements self::I {
}
class B extends core::Object implements self::I {
  synthetic constructor •() → self::B
    : super core::Object::•()
    ;
}
[@vm.inferred-type.metadata=#lib::B?]static field self::I ii = new self::B::•();
static method bar([@vm.inferred-type.metadata=#lib::B?] self::I i) → void {
  if(i is self::A) {
    let dynamic #t1 = i{self::A} in let dynamic #t2 = 42 in throw "Attempt to execute code removed by Dart AOT compiler (TFA)";
  }
}
static method main(core::List<core::String> args) → dynamic {
  self::bar([@vm.inferred-type.metadata=#lib::B?] self::ii);
}
