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};
}
library from "package:moduleB/b.dart" as b {
additionalExports = (c::baz)

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

  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";
}
