library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/extensions/extension_setter2.dart:164:7: Error: This expression has type 'void' and can't be used.
//   cn?.setterWithReturn = 1;
//       ^
//
// pkg/front_end/testcases/extensions/extension_setter2.dart:166:7: Error: This expression has type 'void' and can't be used.
//   cn?.setterWithReturn = -2;
//       ^
//
// pkg/front_end/testcases/extensions/extension_setter2.dart:181:7: Error: This expression has type 'void' and can't be used.
//   cn?.setterWithClosure = 1;
//       ^
//
// pkg/front_end/testcases/extensions/extension_setter2.dart:183:7: Error: This expression has type 'void' and can't be used.
//   cn?.setterWithClosure = -2;
//       ^
//
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;
  get simpleNullableSetter = self::Extension|get#simpleNullableSetter;
  get mutatingSetter = self::Extension|get#mutatingSetter;
  get setterWithReturn = self::Extension|get#setterWithReturn;
  get setterWithClosure = self::Extension|get#setterWithClosure;
  method testInternal = self::Extension|testInternal;
  tearoff testInternal = self::Extension|get#testInternal;
  set simpleSetter = self::Extension|set#simpleSetter;
  set simpleNullableSetter = self::Extension|set#simpleNullableSetter;
  set mutatingSetter = self::Extension|set#mutatingSetter;
  set setterWithReturn = self::Extension|set#setterWithReturn;
  set setterWithClosure = self::Extension|set#setterWithClosure;
}
extension GenericExtension<T extends core::Object? = dynamic> on self::GenericClass<T%> {
  set setter = self::GenericExtension|set#setter;
}
static method Extension|get#simpleSetter(lowered final self::Class #this) → core::int
  return #this.{self::Class::field}{core::int};
static method Extension|set#simpleSetter(lowered final self::Class #this, core::int value) → void {
  #this.{self::Class::field} = value;
}
static method Extension|get#simpleNullableSetter(lowered final self::Class #this) → core::int?
  return #this.{self::Class::nullableField}{core::int?};
static method Extension|set#simpleNullableSetter(lowered final self::Class #this, core::int? value) → void {
  #this.{self::Class::nullableField} = value;
}
static method Extension|get#mutatingSetter(lowered final self::Class #this) → core::int
  return #this.{self::Class::field}{core::int};
static 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 method Extension|get#setterWithReturn(lowered final self::Class #this) → core::int
  return #this.{self::Class::field}{core::int};
static 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 method Extension|get#setterWithClosure(lowered final self::Class #this) → core::int
  return #this.{self::Class::field}{core::int};
static 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,ForNonNullableByDefault} core::bool ?{dynamic} value{dynamic}.unary-() : value;
  }
  #this.{self::Class::field} = abs(value){(dynamic) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
}
static 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 method Extension|get#testInternal(lowered final self::Class #this) → () → dynamic
  return () → dynamic => self::Extension|testInternal(#this);
static 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) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t115, 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) in #t118 == null ?{core::int} let final core::int #t119 = 2 in let final void #t120 = self::Extension|set#simpleNullableSetter(#t117, #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) in #t123 == null ?{core::int} let final core::int #t124 = 2 in let final void #t125 = self::Extension|set#simpleNullableSetter(#t122, #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_setter2.dart:53:12 -> IntConstant(-1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:57:30 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:57:30 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:61:32 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:61:32 -> IntConstant(2)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:66:24 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:68:34 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:68:34 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:70:12 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:70:35 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:70:35 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:70:35 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:75:25 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:77:35 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:77:35 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:79:12 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:79:36 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:79:36 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:79:36 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:91:21 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:96:10 -> IntConstant(-1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:100:30 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:100:30 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:103:41 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:103:41 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:107:32 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:107:32 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:111:43 -> IntConstant(6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:111:43 -> IntConstant(6)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:116:24 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:118:34 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:118:34 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:120:10 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:120:35 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:120:35 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:120:35 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:124:35 -> IntConstant(-6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:126:45 -> IntConstant(7)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:126:45 -> IntConstant(7)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:128:10 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:128:46 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:128:46 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:128:46 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:133:25 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:135:35 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:135:35 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:137:10 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:137:36 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:137:36 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:137:36 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:141:36 -> IntConstant(-6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:143:46 -> IntConstant(7)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:143:46 -> IntConstant(7)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:145:10 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:145:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:145:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:145:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:150:32 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:150:32 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:153:41 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:153:41 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:157:34 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:157:34 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:161:43 -> IntConstant(6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:161:43 -> IntConstant(6)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:166:26 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:168:36 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:168:36 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:170:10 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:170:37 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:170:37 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:170:37 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:174:35 -> IntConstant(-6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:176:45 -> IntConstant(7)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:176:45 -> IntConstant(7)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:178:10 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:178:46 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:178:46 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:178:46 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:183:27 -> IntConstant(-2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:185:37 -> IntConstant(3)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:185:37 -> IntConstant(3)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:187:10 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:187:38 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:187:38 -> IntConstant(-4)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:187:38 -> IntConstant(-4)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:191:36 -> IntConstant(-6)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:193:46 -> IntConstant(7)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:193:46 -> IntConstant(7)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:195:10 -> IntConstant(-8)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:195:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:195:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:195:47 -> IntConstant(-8)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:201:40 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:201:40 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:203:40 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:203:40 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:208:42 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:208:42 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:210:42 -> IntConstant(2)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:210:42 -> IntConstant(2)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///extension_setter2.dart:212:13 -> IntConstant(-1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:215:53 -> IntConstant(1)
Evaluated: VariableGet @ org-dartlang-testcase:///extension_setter2.dart:215:53 -> IntConstant(1)
Extra constant evaluation: evaluated: 848, effectively constant: 104
