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

class Class extends core::Object {
  field core::int field;
  field core::int? nullableField = null;
  constructor •(core::int field) → self::Class
    : self::Class::field = field, super core::Object::•()
    ;
}
class GenericClass<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::GenericClass<self::GenericClass::T%>
    : super core::Object::•()
    ;
}
extension Extension on self::Class {
  get simpleSetter = self::Extension|get#simpleSetter;
  set simpleSetter = self::Extension|set#simpleSetter;
  get simpleNullableSetter = self::Extension|get#simpleNullableSetter;
  set simpleNullableSetter = self::Extension|set#simpleNullableSetter;
  get mutatingSetter = self::Extension|get#mutatingSetter;
  set mutatingSetter = self::Extension|set#mutatingSetter;
  get setterWithReturn = self::Extension|get#setterWithReturn;
  set setterWithReturn = self::Extension|set#setterWithReturn;
  get setterWithClosure = self::Extension|get#setterWithClosure;
  set setterWithClosure = self::Extension|set#setterWithClosure;
  method testInternal = self::Extension|testInternal;
  method tearoff testInternal = self::Extension|get#testInternal;
}
extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
  set setter = self::GenericExtension|set#setter;
}
static extension-member method Extension|get#simpleSetter(lowered final self::Class #this) → core::int
  return #this.{self::Class::field}{core::int};
static extension-member method Extension|set#simpleSetter(lowered final self::Class #this, core::int value) → void {
  #this.{self::Class::field} = value;
}
static extension-member method Extension|get#simpleNullableSetter(lowered final self::Class #this) → core::int?
  return #this.{self::Class::nullableField}{core::int?};
static extension-member method Extension|set#simpleNullableSetter(lowered final self::Class #this, core::int? value) → void {
  #this.{self::Class::nullableField} = value;
}
static extension-member method Extension|get#mutatingSetter(lowered final self::Class #this) → core::int
  return #this.{self::Class::field}{core::int};
static extension-member method Extension|set#mutatingSetter(lowered final self::Class #this, core::int value) → void {
  value = value.{core::num::+}(1){(core::num) → core::int};
  #this.{self::Class::field} = value;
}
static extension-member method Extension|get#setterWithReturn(lowered final self::Class #this) → core::int
  return #this.{self::Class::field}{core::int};
static extension-member method Extension|set#setterWithReturn(lowered final self::Class #this, core::int value) → void {
  if(value.{core::num::<}(0){(core::num) → core::bool}) {
    #this.{self::Class::field} = value.{core::int::unary-}(){() → core::int};
    return;
  }
  #this.{self::Class::field} = value;
}
static extension-member method Extension|get#setterWithClosure(lowered final self::Class #this) → core::int
  return #this.{self::Class::field}{core::int};
static extension-member method Extension|set#setterWithClosure(lowered final self::Class #this, core::int value) → void {
  function abs(dynamic value) → dynamic {
    return value{dynamic}.<(0) as{TypeError,ForDynamic} core::bool ?{dynamic} value{dynamic}.unary-() : value;
  }
  #this.{self::Class::field} = abs(value){(dynamic) → dynamic} as{TypeError,ForDynamic} core::int;
}
static extension-member method Extension|testInternal(lowered final self::Class #this) → dynamic {
  self::expect(1.{core::int::unary-}(){() → core::int}, #this.{self::Class::field}{core::int});
  self::Extension|set#simpleSetter(#this, 0);
  self::expect(0, #this.{self::Class::field}{core::int});
  self::expect(1, let final core::int #t1 = 1 in let final void #t2 = self::Extension|set#simpleSetter(#this, #t1) in #t1);
  self::Extension|set#mutatingSetter(#this, 0);
  self::expect(1, #this.{self::Class::field}{core::int});
  self::expect(2, let final core::int #t3 = 2 in let final void #t4 = self::Extension|set#mutatingSetter(#this, #t3) in #t3);
  self::expect(3, #this.{self::Class::field}{core::int});
  self::Extension|set#setterWithReturn(#this, 1);
  self::expect(1, #this.{self::Class::field}{core::int});
  self::Extension|set#setterWithReturn(#this, 2.{core::int::unary-}(){() → core::int});
  self::expect(2, #this.{self::Class::field}{core::int});
  self::expect(3, let final core::int #t5 = 3 in let final void #t6 = self::Extension|set#setterWithReturn(#this, #t5) in #t5);
  self::expect(3, #this.{self::Class::field}{core::int});
  self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t7 = 4.{core::int::unary-}(){() → core::int} in let final void #t8 = self::Extension|set#setterWithReturn(#this, #t7) in #t7);
  self::expect(4, #this.{self::Class::field}{core::int});
  self::Extension|set#setterWithClosure(#this, 1);
  self::expect(1, #this.{self::Class::field}{core::int});
  self::Extension|set#setterWithClosure(#this, 2.{core::int::unary-}(){() → core::int});
  self::expect(2, #this.{self::Class::field}{core::int});
  self::expect(3, let final core::int #t9 = 3 in let final void #t10 = self::Extension|set#setterWithClosure(#this, #t9) in #t9);
  self::expect(3, #this.{self::Class::field}{core::int});
  self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t11 = 4.{core::int::unary-}(){() → core::int} in let final void #t12 = self::Extension|set#setterWithClosure(#this, #t11) in #t11);
  self::expect(4, #this.{self::Class::field}{core::int});
}
static extension-member method Extension|get#testInternal(lowered final self::Class #this) → () → dynamic
  return () → dynamic => self::Extension|testInternal(#this);
static extension-member method GenericExtension|set#setter<T extends core::Object? = dynamic>(lowered final self::GenericClass<self::GenericExtension|set#setter::T%> #this, self::GenericExtension|set#setter::T% value) → void {}
static method main() → dynamic {
  self::Class c = new self::Class::•(1.{core::int::unary-}(){() → core::int});
  self::test(c, c);
}
static method test(self::Class c, self::Class? cn) → dynamic {
  self::expect(1.{core::int::unary-}(){() → core::int}, c.{self::Class::field}{core::int});
  self::Extension|set#simpleSetter(c, 0);
  self::expect(0, c.{self::Class::field}{core::int});
  self::expect(1, let final core::int #t13 = 1 in let final void #t14 = self::Extension|set#simpleSetter(c, #t13) in #t13);
  self::Extension|set#simpleSetter(c, 2);
  self::expect(2, c.{self::Class::field}{core::int});
  self::expect(3, let final self::Class #t15 = c in let final core::int #t16 = 3 in let final void #t17 = self::Extension|set#simpleSetter(#t15, #t16) in #t16);
  self::Extension|set#mutatingSetter(c, 0);
  self::expect(1, c.{self::Class::field}{core::int});
  self::expect(2, let final core::int #t18 = 2 in let final void #t19 = self::Extension|set#mutatingSetter(c, #t18) in #t18);
  self::expect(3, c.{self::Class::field}{core::int});
  self::Extension|set#mutatingSetter(c, 4);
  self::expect(5, c.{self::Class::field}{core::int});
  self::expect(6, let final self::Class #t20 = c in let final core::int #t21 = 6 in let final void #t22 = self::Extension|set#mutatingSetter(#t20, #t21) in #t21);
  self::expect(7, c.{self::Class::field}{core::int});
  self::Extension|set#setterWithReturn(c, 1);
  self::expect(1, c.{self::Class::field}{core::int});
  self::Extension|set#setterWithReturn(c, 2.{core::int::unary-}(){() → core::int});
  self::expect(2, c.{self::Class::field}{core::int});
  self::expect(3, let final core::int #t23 = 3 in let final void #t24 = self::Extension|set#setterWithReturn(c, #t23) in #t23);
  self::expect(3, c.{self::Class::field}{core::int});
  self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t25 = 4.{core::int::unary-}(){() → core::int} in let final void #t26 = self::Extension|set#setterWithReturn(c, #t25) in #t25);
  self::expect(4, c.{self::Class::field}{core::int});
  self::Extension|set#setterWithReturn(c, 5);
  self::expect(5, c.{self::Class::field}{core::int});
  self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() → core::int});
  self::expect(6, c.{self::Class::field}{core::int});
  self::expect(7, let final self::Class #t27 = c in let final core::int #t28 = 7 in let final void #t29 = self::Extension|set#setterWithReturn(#t27, #t28) in #t28);
  self::expect(7, c.{self::Class::field}{core::int});
  self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t30 = c in let final core::int #t31 = 8.{core::int::unary-}(){() → core::int} in let final void #t32 = self::Extension|set#setterWithReturn(#t30, #t31) in #t31);
  self::expect(8, c.{self::Class::field}{core::int});
  self::Extension|set#setterWithClosure(c, 1);
  self::expect(1, c.{self::Class::field}{core::int});
  self::Extension|set#setterWithClosure(c, 2.{core::int::unary-}(){() → core::int});
  self::expect(2, c.{self::Class::field}{core::int});
  self::expect(3, let final core::int #t33 = 3 in let final void #t34 = self::Extension|set#setterWithClosure(c, #t33) in #t33);
  self::expect(3, c.{self::Class::field}{core::int});
  self::expect(4.{core::int::unary-}(){() → core::int}, let final core::int #t35 = 4.{core::int::unary-}(){() → core::int} in let final void #t36 = self::Extension|set#setterWithClosure(c, #t35) in #t35);
  self::expect(4, c.{self::Class::field}{core::int});
  self::Extension|set#setterWithClosure(c, 5);
  self::expect(5, c.{self::Class::field}{core::int});
  self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() → core::int});
  self::expect(6, c.{self::Class::field}{core::int});
  self::expect(7, let final self::Class #t37 = c in let final core::int #t38 = 7 in let final void #t39 = self::Extension|set#setterWithClosure(#t37, #t38) in #t38);
  self::expect(7, c.{self::Class::field}{core::int});
  self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t40 = c in let final core::int #t41 = 8.{core::int::unary-}(){() → core::int} in let final void #t42 = self::Extension|set#setterWithClosure(#t40, #t41) in #t41);
  self::expect(8, c.{self::Class::field}{core::int});
  self::Extension|set#simpleSetter(c, 0);
  self::expect(0, let final self::Class? #t43 = cn in #t43 == null ?{core::int?} null : #t43{self::Class}.{self::Class::field}{core::int});
  self::expect(1, let final self::Class? #t44 = cn in #t44 == null ?{core::int?} null : let final core::int #t45 = 1 in let final void #t46 = self::Extension|set#simpleSetter(#t44{self::Class}, #t45) in #t45);
  self::Extension|set#simpleSetter(c, 2);
  self::expect(2, let final self::Class? #t47 = cn in #t47 == null ?{core::int?} null : #t47{self::Class}.{self::Class::field}{core::int});
  self::expect(3, let final self::Class #t48 = c in let final core::int #t49 = 3 in let final void #t50 = self::Extension|set#simpleSetter(#t48, #t49) in #t49);
  self::Extension|set#mutatingSetter(c, 0);
  self::expect(1, let final self::Class? #t51 = cn in #t51 == null ?{core::int?} null : #t51{self::Class}.{self::Class::field}{core::int});
  self::expect(2, let final self::Class? #t52 = cn in #t52 == null ?{core::int?} null : let final core::int #t53 = 2 in let final void #t54 = self::Extension|set#mutatingSetter(#t52{self::Class}, #t53) in #t53);
  self::expect(3, let final self::Class? #t55 = cn in #t55 == null ?{core::int?} null : #t55{self::Class}.{self::Class::field}{core::int});
  self::Extension|set#mutatingSetter(c, 4);
  self::expect(5, let final self::Class? #t56 = cn in #t56 == null ?{core::int?} null : #t56{self::Class}.{self::Class::field}{core::int});
  self::expect(6, let final self::Class #t57 = c in let final core::int #t58 = 6 in let final void #t59 = self::Extension|set#mutatingSetter(#t57, #t58) in #t58);
  self::expect(7, let final self::Class? #t60 = cn in #t60 == null ?{core::int?} null : #t60{self::Class}.{self::Class::field}{core::int});
  let final self::Class? #t61 = cn in #t61 == null ?{void} null : self::Extension|set#setterWithReturn(#t61{self::Class}, 1);
  self::expect(1, let final self::Class? #t62 = cn in #t62 == null ?{core::int?} null : #t62{self::Class}.{self::Class::field}{core::int});
  let final self::Class? #t63 = cn in #t63 == null ?{void} null : self::Extension|set#setterWithReturn(#t63{self::Class}, 2.{core::int::unary-}(){() → core::int});
  self::expect(2, let final self::Class? #t64 = cn in #t64 == null ?{core::int?} null : #t64{self::Class}.{self::Class::field}{core::int});
  self::expect(3, let final self::Class? #t65 = cn in #t65 == null ?{core::int?} null : let final core::int #t66 = 3 in let final void #t67 = self::Extension|set#setterWithReturn(#t65{self::Class}, #t66) in #t66);
  self::expect(3, let final self::Class? #t68 = cn in #t68 == null ?{core::int?} null : #t68{self::Class}.{self::Class::field}{core::int});
  self::expect(4.{core::int::unary-}(){() → core::int}, let final self::Class? #t69 = cn in #t69 == null ?{core::int?} null : let final core::int #t70 = 4.{core::int::unary-}(){() → core::int} in let final void #t71 = self::Extension|set#setterWithReturn(#t69{self::Class}, #t70) in #t70);
  self::expect(4, let final self::Class? #t72 = cn in #t72 == null ?{core::int?} null : #t72{self::Class}.{self::Class::field}{core::int});
  self::Extension|set#setterWithReturn(c, 5);
  self::expect(5, let final self::Class? #t73 = cn in #t73 == null ?{core::int?} null : #t73{self::Class}.{self::Class::field}{core::int});
  self::Extension|set#setterWithReturn(c, 6.{core::int::unary-}(){() → core::int});
  self::expect(6, let final self::Class? #t74 = cn in #t74 == null ?{core::int?} null : #t74{self::Class}.{self::Class::field}{core::int});
  self::expect(7, let final self::Class #t75 = c in let final core::int #t76 = 7 in let final void #t77 = self::Extension|set#setterWithReturn(#t75, #t76) in #t76);
  self::expect(7, let final self::Class? #t78 = cn in #t78 == null ?{core::int?} null : #t78{self::Class}.{self::Class::field}{core::int});
  self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t79 = c in let final core::int #t80 = 8.{core::int::unary-}(){() → core::int} in let final void #t81 = self::Extension|set#setterWithReturn(#t79, #t80) in #t80);
  self::expect(8, let final self::Class? #t82 = cn in #t82 == null ?{core::int?} null : #t82{self::Class}.{self::Class::field}{core::int});
  let final self::Class? #t83 = cn in #t83 == null ?{void} null : self::Extension|set#setterWithClosure(#t83{self::Class}, 1);
  self::expect(1, let final self::Class? #t84 = cn in #t84 == null ?{core::int?} null : #t84{self::Class}.{self::Class::field}{core::int});
  let final self::Class? #t85 = cn in #t85 == null ?{void} null : self::Extension|set#setterWithClosure(#t85{self::Class}, 2.{core::int::unary-}(){() → core::int});
  self::expect(2, let final self::Class? #t86 = cn in #t86 == null ?{core::int?} null : #t86{self::Class}.{self::Class::field}{core::int});
  self::expect(3, let final self::Class? #t87 = cn in #t87 == null ?{core::int?} null : let final core::int #t88 = 3 in let final void #t89 = self::Extension|set#setterWithClosure(#t87{self::Class}, #t88) in #t88);
  self::expect(3, let final self::Class? #t90 = cn in #t90 == null ?{core::int?} null : #t90{self::Class}.{self::Class::field}{core::int});
  self::expect(4.{core::int::unary-}(){() → core::int}, let final self::Class? #t91 = cn in #t91 == null ?{core::int?} null : let final core::int #t92 = 4.{core::int::unary-}(){() → core::int} in let final void #t93 = self::Extension|set#setterWithClosure(#t91{self::Class}, #t92) in #t92);
  self::expect(4, let final self::Class? #t94 = cn in #t94 == null ?{core::int?} null : #t94{self::Class}.{self::Class::field}{core::int});
  self::Extension|set#setterWithClosure(c, 5);
  self::expect(5, let final self::Class? #t95 = cn in #t95 == null ?{core::int?} null : #t95{self::Class}.{self::Class::field}{core::int});
  self::Extension|set#setterWithClosure(c, 6.{core::int::unary-}(){() → core::int});
  self::expect(6, let final self::Class? #t96 = cn in #t96 == null ?{core::int?} null : #t96{self::Class}.{self::Class::field}{core::int});
  self::expect(7, let final self::Class #t97 = c in let final core::int #t98 = 7 in let final void #t99 = self::Extension|set#setterWithClosure(#t97, #t98) in #t98);
  self::expect(7, let final self::Class? #t100 = cn in #t100 == null ?{core::int?} null : #t100{self::Class}.{self::Class::field}{core::int});
  self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t101 = c in let final core::int #t102 = 8.{core::int::unary-}(){() → core::int} in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102);
  self::expect(8, let final self::Class? #t104 = cn in #t104 == null ?{core::int?} null : #t104{self::Class}.{self::Class::field}{core::int});
  c.{self::Class::nullableField} = null;
  let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t105, 1) : null;
  self::expect(1, c.{self::Class::nullableField}{core::int?});
  self::expect(1, let final self::Class #t106 = c in let final core::int? #t107 = self::Extension|get#simpleNullableSetter(#t106) in #t107 == null ?{core::int} let final core::int #t108 = 2 in let final void #t109 = self::Extension|set#simpleNullableSetter(#t106, #t108) in #t108 : #t107{core::int});
  c.{self::Class::nullableField} = null;
  self::expect(2, let final self::Class #t110 = c in let final core::int? #t111 = self::Extension|get#simpleNullableSetter(#t110) in #t111 == null ?{core::int} let final core::int #t112 = 2 in let final void #t113 = self::Extension|set#simpleNullableSetter(#t110, #t112) in #t112 : #t111{core::int});
  let final self::Class? #t114 = cn in #t114 == null ?{Null} null : #t114{self::Class}.{self::Class::nullableField} = null;
  let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115{self::Class}) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t115{self::Class}, 1) : null;
  self::expect(1, let final self::Class? #t116 = cn in #t116 == null ?{core::int?} null : #t116{self::Class}.{self::Class::nullableField}{core::int?});
  self::expect(1, let final self::Class? #t117 = cn in #t117 == null ?{core::int?} null : let final core::int? #t118 = self::Extension|get#simpleNullableSetter(#t117{self::Class}) in #t118 == null ?{core::int} let final core::int #t119 = 2 in let final void #t120 = self::Extension|set#simpleNullableSetter(#t117{self::Class}, #t119) in #t119 : #t118{core::int});
  let final self::Class? #t121 = cn in #t121 == null ?{Null} null : #t121{self::Class}.{self::Class::nullableField} = null;
  self::expect(2, let final self::Class? #t122 = cn in #t122 == null ?{core::int?} null : let final core::int? #t123 = self::Extension|get#simpleNullableSetter(#t122{self::Class}) in #t123 == null ?{core::int} let final core::int #t124 = 2 in let final void #t125 = self::Extension|set#simpleNullableSetter(#t122{self::Class}, #t124) in #t124 : #t123{core::int});
  self::Extension|testInternal(new self::Class::•(1.{core::int::unary-}(){() → core::int}));
  self::GenericClass<core::int> genericClass = new self::GenericClass::•<core::int>();
  self::expect(1, let final self::GenericClass<core::int> #t126 = genericClass in let final core::int #t127 = 1 in let final void #t128 = self::GenericExtension|set#setter<core::int>(#t126, #t127) in #t127);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
    throw "Mismatch: expected=${expected}, actual=${actual}";
  }
}


Extra constant evaluation status:
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:53:12 -> IntConstant(-1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:57:30 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:57:30 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:61:32 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:61:32 -> IntConstant(2)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:66:24 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:68:34 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:68:34 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:70:12 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:70:35 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:70:35 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:70:35 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:75:25 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:77:35 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:77:35 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:79:12 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:79:36 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:79:36 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:79:36 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:91:21 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:96:10 -> IntConstant(-1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:100:30 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:100:30 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:103:41 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:103:41 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:107:32 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:107:32 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:111:43 -> IntConstant(6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:111:43 -> IntConstant(6)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:116:24 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:118:34 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:118:34 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:120:10 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:120:35 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:120:35 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:120:35 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:124:35 -> IntConstant(-6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:126:45 -> IntConstant(7)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:126:45 -> IntConstant(7)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:128:10 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:128:46 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:128:46 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:128:46 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:133:25 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:135:35 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:135:35 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:137:10 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:137:36 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:137:36 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:137:36 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:141:36 -> IntConstant(-6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:143:46 -> IntConstant(7)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:143:46 -> IntConstant(7)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:145:10 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:145:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:145:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:145:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:150:32 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:150:32 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:153:41 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:153:41 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:157:34 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:157:34 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:161:43 -> IntConstant(6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:161:43 -> IntConstant(6)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:166:26 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:168:36 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:168:36 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:170:10 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:170:37 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:170:37 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:170:37 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:174:35 -> IntConstant(-6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:176:45 -> IntConstant(7)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:176:45 -> IntConstant(7)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:178:10 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:178:46 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:178:46 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:178:46 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:183:27 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:185:37 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:185:37 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:187:10 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:187:38 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:187:38 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:187:38 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:191:36 -> IntConstant(-6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:193:46 -> IntConstant(7)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:193:46 -> IntConstant(7)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:195:10 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:195:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:195:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:195:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:201:40 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:201:40 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:203:40 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:203:40 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:208:42 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:208:42 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:210:42 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:210:42 -> IntConstant(2)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter.dart:212:13 -> IntConstant(-1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:215:53 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter.dart:215:53 -> IntConstant(1)
Extra constant evaluation: evaluated: 848, effectively constant: 104
