library;
import self as self;

import "org-dartlang-testcase:///infer_from_variables_in_cycle_libs_when_flag_is_on2.dart";

static field dynamic x = 2;
static method main() → dynamic {}

library test;
import self as self2;
import "dart:core" as core;
import "infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart" as inf;

import "org-dartlang-testcase:///infer_from_variables_in_cycle_libs_when_flag_is_on2_a.dart";

class B extends core::Object {
  static field dynamic y = inf::A::x;
  synthetic constructor •() → self2::B*
    : super core::Object::•()
    ;
}
static method test1() → dynamic {
  core::int* t = 3;
  t = inf::A::x;
  t = self2::B::y;
}
static method main() → dynamic {}

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

import "org-dartlang-testcase:///infer_from_variables_in_cycle_libs_when_flag_is_on2.dart";

class A extends core::Object {
  static field dynamic x = 2;
  synthetic constructor •() → inf::A*
    : super core::Object::•()
    ;
}
static method main() → dynamic {}
