main = <No Member>;
//
// Problems in component:
//
// org-dartlang-test:///mypackage/b.dart:3:7: Error: 'Baz' can't implement both 'Foo<int>' and 'Foo<String>'
//  - 'Foo' is from 'package:mypackage/a.dart' ('org-dartlang-test:///mypackage/a.dart').
// class Baz extends Bar<int> implements Foo<String> {}
//       ^
//
library from "org-dartlang-test:///main.dart" as main {

  import "package:mypackage/a.dart";

}
library from "package:mypackage/a.dart" as a {

  import "package:mypackage/b.dart";

  class Foo<T extends dart.core::Object? = dynamic> extends dart.core::Object {
    synthetic constructor •() → a::Foo<a::Foo::T%>
      : super dart.core::Object::•()
      ;
  }
  class Bar<T extends dart.core::Object? = dynamic> extends a::Foo<a::Bar::T%> {
    synthetic constructor •() → a::Bar<a::Bar::T%>
      : super a::Foo::•()
      ;
  }
}
library from "package:mypackage/b.dart" as b {

  import "package:mypackage/a.dart";

  class Baz extends a::Bar<dart.core::int> implements a::Foo<dart.core::String> {
    synthetic constructor •() → b::Baz
      : super a::Bar::•()
      ;
  }
}
