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