main = <No Member>;
library bLibrary from "org-dartlang-test:///b.dart" as bLi {

  class I<T extends dart.core::Object* = dynamic> extends dart.core::Object {
    synthetic constructor •() → bLi::I<bLi::I::T*>*
      : super dart.core::Object::•()
      ;
  }
  class A extends dart.core::Object implements bLi::I<dart.core::int*> {
    synthetic constructor •() → bLi::A*
      : super dart.core::Object::•()
      ;
  }
  class B extends dart.core::Object implements bLi::I<dart.core::String*> {
    synthetic constructor •() → bLi::B*
      : super dart.core::Object::•()
      ;
  }
  class C extends bLi::A implements bLi::B {
    synthetic constructor •() → bLi::C*
      : super bLi::A::•()
      ;
  }
  static method foo() → dynamic {
    dart.core::print("hello from b.dart foo!");
    dart.core::print(new bLi::C::•());
  }
}
library mainLibrary from "org-dartlang-test:///main.dart" as mai {

  import "org-dartlang-test:///b.dart" as b;

  static method main() → dynamic {
    bLi::foo();
  }
}
