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

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

  class Y extends dart.core::Object implements main::X {
    synthetic constructor •() → lib::Y*
      : super dart.core::Object::•()
      ;
    get foo() → dart.core::int*
      return 42;
  }
}
library from "org-dartlang-test:///main.dart" as main {

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

  class X extends dart.core::Object {
    synthetic constructor •() → main::X*
      : super dart.core::Object::•()
      ;
  }
  static method foo(main::X* x) → dart.core::int* {
    return x is lib::Y* ?{dart.core::int*} x{lib::Y*}.{lib::Y::foo} : null;
  }
}
