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

  import "package:moduleB/b.dart";

  class A1 extends b::A2 {
    synthetic constructor •() → a::A1*
      : super b::A2::•()
      ;
    method fooMethod() → dart.core::String*
      return "42!";
  }
  static field dart.core::int* foo = b::bVar;
  static field dart.core::String* foo2 = b::bVarFromC;
}
library from "package:moduleB/b.dart" as b {

  import "package:moduleC/c.dart";

  class A2 extends c::A3 {
    field dart.core::int* bar = 42;
    synthetic constructor •() → b::A2*
      : super c::A3::•()
      ;
  }
  static field dart.core::int* bVar = 42;
  static field dart.core::String* bVarFromC = c::baz2;
  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";
}
