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

  import "org-dartlang-test:///c.dart";

  static method b() → dynamic {
    dart.core::print("hello from b");
    c::c();
  }
}
library from "org-dartlang-test:///c.dart" as c {

  static method c() → dynamic {
    dart.core::print("hello from c");
  }
}
library from "org-dartlang-test:///main.dart" as main {

  import "org-dartlang-test:///b.dart";
  import "org-dartlang-test:///nonexisting.dart";

  static method main() → dynamic {
    dart.core::print("hello");
    b::b();
  }
}
library from "org-dartlang-test:///nonexisting.dart" as non {
//
// Problems in library:
//
// org-dartlang-test:///main.dart:2:8: Error: Error when reading 'org-dartlang-test:///nonexisting.dart': File org-dartlang-test:///nonexisting.dart does not exist.
// import "nonexisting.dart";
//        ^
//

}
