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 {
  let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::x = 2;
}

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 dynamic x = 0;
static method m(dynamic x) → dynamic
  return null;
