library;
import self as self;
import "./deferred_lib.dart" as def;

import "org-dartlang-testcase:///deferred_lib.dart" deferred as lib;

static method main() → dynamic {}
static method test() → dynamic async {
  let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::m(await LoadLibrary(lib));
}

library;
import self as def;
import "dart:core" as core;

class C extends core::Object {
  static field core::int y = 1;
  synthetic constructor •() → def::C
    : super core::Object::•()
    ;
  static method m() → core::int
    return 2;
}
static field core::int x = 0;
static method m(dynamic x) → dynamic
  return null;
