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

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

static method main() → dynamic {}
static method test() → dynamic {
  core::print(let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::C::y);
}

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;
