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

  part libpart.dart;
  static method libMethod() → dynamic {
    dart.core::print("libMethod");
  }
  static method /* from org-dartlang-test:///libpart.dart */ libPartMethod() → dynamic {
    dart.core::print("libPartMethod");
  }
}
library from "org-dartlang-test:///main.dart" as main {

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

  static method main() → dynamic {
    lib::libMethod();
    lib::libPartMethod();
  }
}
