library;
import self as self;
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 •() → self::A
    : super core::Object::•()
    ;
}
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 self;

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 = self::A::x;
  synthetic constructor •() → self2::B
    : super core::Object::•()
    ;
}
static method test1() → dynamic {
  core::int t = 3;
  t = self::A::x;
  t = self2::B::y;
}
static method main() → dynamic {}
