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

class Class extends core::Object {
  field core::int? field = null;
  synthetic constructor •() → self::Class
    : super core::Object::•()
    ;
}
extension Extension on self::Class {
  get property = self::Extension|get#property;
  method method = self::Extension|method;
  method tearoff method = self::Extension|get#method;
  method testImplicitThis = self::Extension|testImplicitThis;
  method tearoff testImplicitThis = self::Extension|get#testImplicitThis;
  set property = self::Extension|set#property;
}
static extension-member method Extension|get#property(lowered final self::Class #this) → core::int?
  return #this.{self::Class::field}{core::int?};
static extension-member method Extension|set#property(lowered final self::Class #this, core::int? value) → void {
  #this.{self::Class::field} = value;
}
static extension-member method Extension|method(lowered final self::Class #this) → core::int?
  return #this.{self::Class::field}{core::int?};
static extension-member method Extension|get#method(lowered final self::Class #this) → () → core::int?
  return () → core::int? => self::Extension|method(#this);
static extension-member method Extension|testImplicitThis(lowered final self::Class #this) → dynamic {
  self::expect(null, self::Extension|get#property(#this));
  self::expect(42, let final core::int? #t1 = self::Extension|get#property(#this) in #t1 == null ?{core::int} let final core::int #t2 = 42 in let final void #t3 = self::Extension|set#property(#this, #t2) in #t2 : #t1{core::int});
  self::expect(42, let final core::int? #t4 = self::Extension|get#property(#this) in #t4 == null ?{core::int} let final core::int #t5 = 87 in let final void #t6 = self::Extension|set#property(#this, #t5) in #t5 : #t4{core::int});
}
static extension-member method Extension|get#testImplicitThis(lowered final self::Class #this) → () → dynamic
  return () → dynamic => self::Extension|testImplicitThis(#this);
static method main() → dynamic {
  self::test1(null);
  self::test2(new self::Class::•());
}
static method test1(self::Class? c) → dynamic {
  self::expect(null, let final self::Class? #t7 = c in #t7 == null ?{core::int?} null : self::Extension|get#property(#t7{self::Class}));
  self::expect(null, let final self::Class? #t8 = c in #t8 == null ?{() →? core::int?} null : self::Extension|get#method(#t8{self::Class}));
  self::expect(null, let final self::Class? #t9 = c in #t9 == null ?{core::int?} null : self::Extension|method(#t9{self::Class}));
  self::expect(null, let final self::Class? #t10 = c in #t10 == null ?{core::int?} null : let final core::int #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10{self::Class}, #t11) in #t11);
  self::expect(null, let final self::Class? #t13 = c in #t13 == null ?{core::int?} null : let final core::int? #t14 = self::Extension|get#property(#t13{self::Class}) in #t14 == null ?{core::int} let final core::int #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13{self::Class}, #t15) in #t15 : #t14{core::int});
}
static method test2(self::Class? c) → dynamic {
  self::expect(null, let final self::Class? #t17 = c in #t17 == null ?{core::int?} null : self::Extension|get#property(#t17{self::Class}));
  self::expect(null, let final self::Class? #t18 = c in #t18 == null ?{core::int?} null : self::Extension|method(#t18{self::Class}));
  () →? core::int? tearOff = let final self::Class? #t19 = c in #t19 == null ?{() →? core::int?} null : self::Extension|get#method(#t19{self::Class});
  self::expect(null, tearOff!(){() → core::int?});
  self::expect(42, let final self::Class? #t20 = c in #t20 == null ?{core::int?} null : let final core::int #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20{self::Class}, #t21) in #t21);
  self::expect(42, tearOff{() → core::int?}(){() → core::int?});
  self::expect(null, let final self::Class? #t23 = c in #t23 == null ?{Null} null : let final has-declared-initializer Null #t24 = null in let final void #t25 = self::Extension|set#property(#t23{self::Class}, #t24) in #t24);
  self::expect(42, let final self::Class? #t26 = c in #t26 == null ?{core::int?} null : let final core::int #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26{self::Class}, #t27) in #t27);
  let final self::Class? #t29 = c in #t29 == null ?{void} null : self::Extension|set#property(#t29{self::Class}, null);
  self::expect(null, let final self::Class? #t30 = c in #t30 == null ?{core::int?} null : self::Extension|get#property(#t30{self::Class}));
  self::expect(42, let final self::Class? #t31 = c in #t31 == null ?{core::int?} null : let final core::int? #t32 = self::Extension|get#property(#t31) in #t32 == null ?{core::int} let final core::int #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32{core::int});
  self::expect(42, let final self::Class? #t35 = c in #t35 == null ?{core::int?} null : let final core::int? #t36 = self::Extension|get#property(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36{core::int});
  self::expect(null, let final self::Class? #t39 = c in #t39 == null ?{Null} null : let final has-declared-initializer Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39{self::Class}, #t40) in #t40);
  let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int} self::Extension|set#property(#t42, 42) : null;
  self::expect(42, let final self::Class? #t43 = c in #t43 == null ?{core::int?} null : self::Extension|get#property(#t43{self::Class}));
  let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int} self::Extension|set#property(#t44, 87) : null;
  self::expect(42, let final self::Class? #t45 = c in #t45 == null ?{core::int?} null : self::Extension|get#property(#t45{self::Class}));
  let final self::Class? #t46 = c in #t46 == null ?{void} null : self::Extension|set#property(#t46{self::Class}, null);
  self::expect(null, let final self::Class? #t47 = c in #t47 == null ?{core::int?} null : self::Extension|get#property(#t47{self::Class}));
  self::expect(42, let final self::Class? #t48 = c in #t48 == null ?{core::int?} null : let final core::int? #t49 = self::Extension|get#property(#t48{self::Class}) in #t49 == null ?{core::int} let final core::int #t50 = 42 in let final void #t51 = self::Extension|set#property(#t48{self::Class}, #t50) in #t50 : #t49{core::int});
  self::expect(42, let final self::Class? #t52 = c in #t52 == null ?{core::int?} null : let final core::int? #t53 = self::Extension|get#property(#t52{self::Class}) in #t53 == null ?{core::int} let final core::int #t54 = 87 in let final void #t55 = self::Extension|set#property(#t52{self::Class}, #t54) in #t54 : #t53{core::int});
  let final self::Class? #t56 = c in #t56 == null ?{void} null : self::Extension|set#property(#t56{self::Class}, null);
  self::expect(null, let final self::Class? #t57 = c in #t57 == null ?{core::int?} null : self::Extension|get#property(#t57{self::Class}));
  let final self::Class? #t58 = c in #t58 == null ?{core::int?} null : self::Extension|get#property(#t58{self::Class}) == null ?{core::int?} self::Extension|set#property(#t58{self::Class}, 42) : null;
  self::expect(42, let final self::Class? #t59 = c in #t59 == null ?{core::int?} null : self::Extension|get#property(#t59{self::Class}));
  let final self::Class? #t60 = c in #t60 == null ?{core::int?} null : self::Extension|get#property(#t60{self::Class}) == null ?{core::int?} self::Extension|set#property(#t60{self::Class}, 87) : null;
  self::expect(42, let final self::Class? #t61 = c in #t61 == null ?{core::int?} null : self::Extension|get#property(#t61{self::Class}));
  let final self::Class? #t62 = c in #t62 == null ?{void} null : self::Extension|set#property(#t62{self::Class}, null);
  let final self::Class? #t63 = c in #t63 == null ?{dynamic} null : self::Extension|testImplicitThis(#t63{self::Class});
}
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: VariableGet @ org-dartlang-testcase:///null_aware2.dart:19:29 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:19:29 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:20:29 -> IntConstant(87)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:20:29 -> IntConstant(87)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:33:30 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:33:30 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:34:43 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:34:43 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:42:28 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:42:28 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:45:30 -> NullConstant(null)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:45:30 -> NullConstant(null)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:46:28 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:46:28 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:50:30 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:50:30 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:51:30 -> IntConstant(87)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:51:30 -> IntConstant(87)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:53:30 -> NullConstant(null)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:53:30 -> NullConstant(null)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:61:41 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:61:41 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:62:41 -> IntConstant(87)
Evaluated: VariableGet @ org-dartlang-testcase:///null_aware2.dart:62:41 -> IntConstant(87)
Extra constant evaluation: evaluated: 399, effectively constant: 24
