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

  import "package:moduleB/b.dart";

  static field dart.core::String foo = c::baz;
  static field dart.core::int x = b::mya2.{b::A2::bar}{dart.core::int};
}
library from "package:moduleB/b.dart" as b {
additionalExports = (c::baz,
  c::baz)

  import "package:moduleC/c.dart";
  export "package:moduleC/c.dart" show baz;

  class A2 extends c::A3 {
    field dart.core::int bar = 42;
    synthetic constructor •() → b::A2
      : super c::A3::•()
      ;
  }
  static field b::A2 mya2 = new b::A2::•();
}
library from "package:moduleC/c.dart" as c {

  import "package:moduleD/d.dart";

  class A3 extends dart.core::Object {
    field dart.core::int foo = 42;
    synthetic constructor •() → c::A3
      : super dart.core::Object::•()
      ;
  }
  static field dart.core::String baz = "42";
  static field dart.core::String baz2 = d::baz3;
}
library from "package:moduleD/d.dart" as d {

  static field dart.core::String baz3 = "baz3";
}
