main = <No Member>;
library from "package:example/b.dart" as b {

  static field dart.core::bool* example011 = true;
  static method b() → dynamic {
    dart.core::print("Hello from v0.1.1");
  }
}
library from "package:foo/bar.dart" as bar {

  static method bar() → dynamic {
    dart.core::print("hello from bar");
  }
}
library from "package:foo/baz.dart" as baz {

  static method baz() → dynamic {
    dart.core::print("hello from baz");
  }
}
library from "package:foo/foo.dart" as foo {

  import "package:example/b.dart";
  import "package:foo/bar.dart";
  import "package:foo/baz.dart";

  static field dart.core::bool* foo2 = true;
  static method foo() → dynamic {
    dart.core::print("Hello from foo 2");
    bar::bar();
    baz::baz();
    b::b();
  }
}
library from "org-dartlang-test:///main.dart" as main {

  import "package:foo/foo.dart";

  static method main() → dynamic {
    dart.core::print("hello");
    foo::foo();
  }
}
