library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

class Class1 extends core::Object /*hasConstConstructor*/  {
  const constructor •({self::Class1? c = const self::Class1::•(c: null)}) → self::Class1
    : super core::Object::•()
    ;
}
class Class2 extends core::Object /*hasConstConstructor*/  {
  final field self::Class2? field;
  const constructor •(core::int value) → self::Class2
    : self::Class2::field = value =={core::num::==}{(core::Object) → core::bool} 0 ?{self::Class2?} null : const self::Class2::•(0), super core::Object::•()
    ;
}
class Class3 extends core::Object /*hasConstConstructor*/  {
  const constructor •([self::Class3? c = self::c3_1]) → self::Class3
    : super core::Object::•()
    ;
}
class Class4 extends core::Object /*hasConstConstructor*/  {
  const constructor •({self::Class4? c = const self::Class4::•()}) → self::Class4
    : super core::Object::•()
    ;
}
static const field core::int a = self::b;
static const field core::int b = self::a;
static const field core::int c = self::d;
static const field core::int d = self::e.{core::num::+}(1){(core::num) → core::int};
static const field core::int e = self::d.{core::num::-}(1){(core::num) → core::int};
static const field self::Class1 c1_0 = const self::Class1::•();
static const field self::Class1 c1_1 = const self::Class1::•(c: null);
static const field self::Class1 c1_2 = const self::Class1::•();
static const field self::Class2 c2_0 = const self::Class2::•(1);
static const field self::Class2 c2_1 = const self::Class2::•(0);
static const field self::Class2 c2_2 = const self::Class2::•(1);
static const field self::Class3 c3_0 = const self::Class3::•();
static const field self::Class3 c3_1 = const self::Class3::•(self::c3_2);
static const field self::Class3 c3_2 = const self::Class3::•(null);
static const field self::Class4 c4_0 = const self::Class4::•();
static const field self::Class4 c4_1 = const self::Class4::•(c: null);
static method main() → dynamic
  ;


Extra constant evaluation status:
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///circularity.dart:12:35 -> InstanceConstant(const Class1{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///circularity.dart:21:63 -> InstanceConstant(const Class2{Class2.field: null})
Evaluated: StaticGet @ org-dartlang-testcase:///circularity.dart:29:29 -> InstanceConstant(const Class3{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///circularity.dart:15:27 -> InstanceConstant(const Class1{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///circularity.dart:16:27 -> InstanceConstant(const Class1{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///circularity.dart:17:27 -> InstanceConstant(const Class1{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///circularity.dart:25:27 -> InstanceConstant(const Class2{Class2.field: null})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///circularity.dart:32:27 -> InstanceConstant(const Class3{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///circularity.dart:33:27 -> InstanceConstant(const Class3{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///circularity.dart:34:27 -> InstanceConstant(const Class3{})
Evaluated: ConstructorInvocation @ org-dartlang-testcase:///circularity.dart:41:27 -> InstanceConstant(const Class4{})
Extra constant evaluation: evaluated: 25, effectively constant: 11
