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;
  set property = self::Extension|set#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;
}
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{self::Class}) in #t32 == null ?{core::int} let final core::int #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31{self::Class}, #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{self::Class}) in #t36 == null ?{core::int} let final core::int #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35{self::Class}, #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{self::Class}) == null ?{core::int?} self::Extension|set#property(#t42{self::Class}, 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{self::Class}) == null ?{core::int?} self::Extension|set#property(#t44{self::Class}, 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}";
  }
}
