main = main::main;
library from "org-dartlang-test:///lib1.dart" as lib1 {

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

  class Foo extends dart.core::Object {
    static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
    static factory •() → lib1::Foo
      return new lib2::Bar::•();
  }
  static method libMethod() → void {
    lib1::Foo foo = new lib2::Bar::•();
    lib2::Bar bar = new lib2::Bar::•();
  }
}
library from "org-dartlang-test:///lib2.dart" as lib2 {

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

  class Bar extends dart.core::Object implements lib1::Foo {
    constructor •() → lib2::Bar
      : super dart.core::Object::•()
      ;
  }
}
library from "org-dartlang-test:///main.dart" as main {

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

  static method main() → dynamic {
    lib1::libMethod();
  }
}
constants  {
  #C1 = constructor-tearoff lib1::Foo::•
}
