library;
import self as self;
import "dart:core" as core;
import "infer_statics_transitively_b.dart" as inf;
import "infer_statics_transitively.dart" as test;

import "org-dartlang-testcase:///infer_statics_transitively.dart";
import "org-dartlang-testcase:///infer_statics_transitively_b.dart";

class A extends core::Object {
  static final field core::int a2 = inf::b1;
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
}
static final field core::int a1 = test::m2;
static method main() → dynamic {
  self::a1;
}

library test;
import self as test;
import "dart:core" as core;
import "infer_statics_transitively_a.dart" as inf2;

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

static final field core::int m1 = inf2::a1;
static final field core::int m2 = inf2::A::a2;
static method foo() → dynamic {
  core::int i;
  i = test::m1;
}
static method main() → dynamic {}

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

static final field core::int b1 = 2;
static method main() → dynamic {
  inf::b1;
}

library;
import self as inf2;
import "dart:core" as core;
import "infer_statics_transitively_b.dart" as inf;
import "infer_statics_transitively.dart" as test;

import "org-dartlang-testcase:///infer_statics_transitively.dart";
import "org-dartlang-testcase:///infer_statics_transitively_b.dart";

class A extends core::Object {
  static final field core::int a2 = inf::b1;
  synthetic constructor •() → inf2::A
    : super core::Object::•()
    ;
}
static final field core::int a1 = test::m2;
static method main() → dynamic {}
