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

  import "package:module/a.dart";

  class Foo extends a::A {
    synthetic constructor •() → main::Foo*
      : super a::A::•()
      ;
  }
}
library from "package:module/a.dart" as a {

  import "package:module/b.dart";

  class A extends dart.core::Object implements a::A2<b::B*> {
    synthetic constructor •() → a::A*
      : super dart.core::Object::•()
      ;
  }
  class A2<T extends dart.core::Object* = dynamic> extends dart.core::Object {
    synthetic constructor •() → a::A2<a::A2::T*>*
      : super dart.core::Object::•()
      ;
  }
}
library from "package:module/b.dart" as b {

  class B extends dart.core::Object {
    synthetic constructor •() → b::B*
      : super dart.core::Object::•()
      ;
  }
}
