main = main::main;
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();
  }
}
