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 {
  let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::x = self::m2() as{TypeError,ForDynamic} core::int*;
  let final core::Object* #t2 = CheckLibraryIsLoaded(lib) in def::m(self::m2());
}
static method m2() → dynamic
  return 1;

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;
