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

class Class extends core::Object {
  field self::Class? _field = null;
  synthetic constructor •() → self::Class
    : super core::Object::•()
    ;
}
extension Extension on self::Class {
  get field = self::Extension|get#field;
  method method = self::Extension|method;
  tearoff method = self::Extension|get#method;
  operator [] = self::Extension|[];
  operator []= = self::Extension|[]=;
  operator + = self::Extension|+;
  operator unary- = self::Extension|unary-;
  set field = self::Extension|set#field;
}
static method Extension|get#field(final self::Class #this) → self::Class?
  return #this.{self::Class::_field};
static method Extension|set#field(final self::Class #this, self::Class? value) → void {
  #this.{self::Class::_field} = value;
}
static method Extension|method(final self::Class #this) → self::Class?
  return self::Extension|get#field(#this);
static method Extension|get#method(final self::Class #this) → () →* self::Class?
  return () → self::Class? => self::Extension|method(#this);
static method Extension|[](final self::Class #this, self::Class? key) → self::Class?
  return self::Extension|get#field(#this);
static method Extension|[]=(final self::Class #this, self::Class? key, self::Class? value) → void {
  self::Extension|set#field(#this, value);
}
static method Extension|+(final self::Class #this, core::int value) → self::Class?
  return self::Extension|get#field(#this);
static method Extension|unary-(final self::Class #this) → self::Class?
  return self::Extension|get#field(#this);
static method main() → dynamic {
  self::propertyAccess(null);
  self::indexAccess(null);
  self::operatorAccess(null);
  self::ifNull(null);
}
static method propertyAccess(self::Class? c) → void {
  let final self::Class? #t1 = c in #t1.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(#t1{self::Class});
  let final self::Class? #t2 = c in #t2.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(#t2{self::Class}, new self::Class::•());
  c = let final self::Class? #t3 = c in #t3.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t4 = new self::Class::•() in let final void #t5 = self::Extension|set#field(#t3{self::Class}, #t4) in #t4;
  let final self::Class #t6 = c{self::Class} in #t6.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(#t6);
  let final self::Class #t7 = c{self::Class} in #t7.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(self::Extension|get#field(#t7));
  let final self::Class #t8 = c{self::Class} in #t8.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t9 = self::Extension|get#field(#t8) in #t9.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(#t9{self::Class});
  let final self::Class #t10 = c{self::Class} in #t10.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t11 = self::Extension|get#field(self::Extension|get#field(#t10)) in #t11.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(#t11{self::Class});
  let final self::Class #t12 = c{self::Class} in #t12.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(self::Extension|get#field(#t12), new self::Class::•());
  let final self::Class #t13 = c{self::Class} in #t13.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t14 = self::Extension|get#field(#t13) in #t14.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(#t14{self::Class}, new self::Class::•());
  let final self::Class #t15 = c{self::Class} in #t15.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t16 = self::Extension|get#field(self::Extension|get#field(#t15)) in #t16.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(#t16{self::Class}, new self::Class::•());
  self::throws(() → self::Class? => self::Extension|get#field(let final self::Class? #t17 = c in #t17.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(#t17{self::Class})));
  self::throws(() → self::Class? => self::Extension|get#field(let final self::Class? #t18 = c in #t18.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t19 = new self::Class::•() in let final void #t20 = self::Extension|set#field(#t18{self::Class}, #t19) in #t19));
  self::throws(() → self::Class? => self::Extension|get#field(let final self::Class? #t21 = c in #t21.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(#t21{self::Class})));
  c = let final self::Class #t22 = c{self::Class} in #t22.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t23 = new self::Class::•() in let final void #t24 = self::Extension|set#field(self::Extension|get#field(#t22), #t23) in #t23;
  c = let final self::Class #t25 = c{self::Class} in #t25.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t26 = self::Extension|get#field(#t25) in #t26.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t27 = new self::Class::•() in let final void #t28 = self::Extension|set#field(#t26{self::Class}, #t27) in #t27;
  c = let final self::Class #t29 = c{self::Class} in #t29.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t30 = self::Extension|get#field(self::Extension|get#field(#t29)) in #t30.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t31 = new self::Class::•() in let final void #t32 = self::Extension|set#field(#t30{self::Class}, #t31) in #t31;
  let final self::Class #t33 = c{self::Class} in #t33.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(self::Extension|get#field(#t33));
  let final self::Class #t34 = c{self::Class} in #t34.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(#t34, self::Extension|get#field(new self::Class::•()));
  c = let final self::Class #t35 = c{self::Class} in #t35.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t36 = self::Extension|get#field(new self::Class::•()) in let final void #t37 = self::Extension|set#field(#t35, #t36) in #t36;
  let final self::Class? #t38 = c in #t38.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(#t38{self::Class}, let final self::Class #t39 = new self::Class::•() in let final void #t40 = self::Extension|set#field(new self::Class::•(), #t39) in #t39);
  c = let final self::Class? #t41 = c in #t41.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t42 = let final self::Class #t43 = new self::Class::•() in let final void #t44 = self::Extension|set#field(new self::Class::•(), #t43) in #t43 in let final void #t45 = self::Extension|set#field(#t41{self::Class}, #t42) in #t42;
  let final self::Class #t46 = c{self::Class} in #t46.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(#t46, self::Extension|method(new self::Class::•()));
  c = let final self::Class #t47 = c{self::Class} in #t47.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t48 = self::Extension|method(new self::Class::•()) in let final void #t49 = self::Extension|set#field(#t47, #t48) in #t48;
  let final self::Class? #t50 = c in #t50.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(self::Extension|method(#t50{self::Class}));
  let final self::Class? #t51 = c in #t51.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(self::Extension|method(#t51{self::Class}), new self::Class::•());
  let final self::Class? #t52 = c in #t52.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(self::Extension|method(#t52{self::Class}));
  let final self::Class? #t53 = c in #t53.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(self::Extension|get#field(self::Extension|get#field(#t53{self::Class})));
  let final self::Class? #t54 = c in #t54.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(self::Extension|get#field(self::Extension|get#field(#t54{self::Class})), new self::Class::•());
  c = let final self::Class? #t55 = c in #t55.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t56 = new self::Class::•() in let final void #t57 = self::Extension|set#field(self::Extension|get#field(self::Extension|get#field(#t55{self::Class})), #t56) in #t56;
  let final self::Class #t58 = c{self::Class} in #t58.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(self::Extension|get#field(self::Extension|get#field(#t58)));
  let final self::Class #t59 = c{self::Class} in #t59.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(#t59, self::Extension|get#field(self::Extension|get#field(new self::Class::•())));
  c = let final self::Class #t60 = c{self::Class} in #t60.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t61 = self::Extension|get#field(self::Extension|get#field(new self::Class::•())) in let final void #t62 = self::Extension|set#field(#t60, #t61) in #t61;
  let final self::Class? #t63 = c in #t63.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(#t63{self::Class}, let final self::Class #t64 = new self::Class::•() in let final void #t65 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t64) in #t64);
  c = let final self::Class? #t66 = c in #t66.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t67 = let final self::Class #t68 = new self::Class::•() in let final void #t69 = self::Extension|set#field(self::Extension|get#field(new self::Class::•()), #t68) in #t68 in let final void #t70 = self::Extension|set#field(#t66{self::Class}, #t67) in #t67;
  let final self::Class #t71 = c{self::Class} in #t71.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(#t71, self::Extension|method(self::Extension|get#field(new self::Class::•())));
  c = let final self::Class #t72 = c{self::Class} in #t72.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t73 = self::Extension|method(self::Extension|get#field(new self::Class::•())) in let final void #t74 = self::Extension|set#field(#t72, #t73) in #t73;
  let final self::Class? #t75 = c in #t75.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(self::Extension|get#field(self::Extension|method(#t75{self::Class})));
  let final self::Class? #t76 = c in #t76.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(self::Extension|get#field(self::Extension|method(#t76{self::Class})), new self::Class::•());
  let final self::Class? #t77 = c in #t77.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(self::Extension|get#field(self::Extension|method(#t77{self::Class})));
  let final self::Class? #t78 = c in #t78.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(self::Extension|get#field(#t78{self::Class}), self::Extension|get#field(new self::Class::•()));
  c = let final self::Class? #t79 = c in #t79.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t80 = self::Extension|get#field(new self::Class::•()) in let final void #t81 = self::Extension|set#field(self::Extension|get#field(#t79{self::Class}), #t80) in #t80;
  let final self::Class? #t82 = c in #t82.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(self::Extension|get#field(#t82{self::Class}), let final self::Class #t83 = new self::Class::•() in let final void #t84 = self::Extension|set#field(new self::Class::•(), #t83) in #t83);
  c = let final self::Class? #t85 = c in #t85.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t86 = let final self::Class #t87 = new self::Class::•() in let final void #t88 = self::Extension|set#field(new self::Class::•(), #t87) in #t87 in let final void #t89 = self::Extension|set#field(self::Extension|get#field(#t85{self::Class}), #t86) in #t86;
  let final self::Class #t90 = c{self::Class} in #t90.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(self::Extension|get#field(#t90), self::Extension|method(new self::Class::•()));
  c = let final self::Class #t91 = c{self::Class} in #t91.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t92 = self::Extension|method(new self::Class::•()) in let final void #t93 = self::Extension|set#field(self::Extension|get#field(#t91), #t92) in #t92;
  let final self::Class? #t94 = c in #t94.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(#t94{self::Class}, let final self::Class? #t95 = self::Extension|get#field(new self::Class::•()) in let final void #t96 = self::Extension|set#field(new self::Class::•(), #t95) in #t95);
  c = let final self::Class? #t97 = c in #t97.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t98 = let final self::Class? #t99 = self::Extension|get#field(new self::Class::•()) in let final void #t100 = self::Extension|set#field(new self::Class::•(), #t99) in #t99 in let final void #t101 = self::Extension|set#field(#t97{self::Class}, #t98) in #t98;
  let final self::Class? #t102 = c in #t102.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(#t102{self::Class}, let final self::Class #t103 = let final self::Class #t104 = new self::Class::•() in let final void #t105 = self::Extension|set#field(new self::Class::•(), #t104) in #t104 in let final void #t106 = self::Extension|set#field(new self::Class::•(), #t103) in #t103);
  c = let final self::Class? #t107 = c in #t107.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t108 = let final self::Class #t109 = let final self::Class #t110 = new self::Class::•() in let final void #t111 = self::Extension|set#field(new self::Class::•(), #t110) in #t110 in let final void #t112 = self::Extension|set#field(new self::Class::•(), #t109) in #t109 in let final void #t113 = self::Extension|set#field(#t107{self::Class}, #t108) in #t108;
  let final self::Class #t114 = c{self::Class} in #t114.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(#t114, let final self::Class? #t115 = self::Extension|method(new self::Class::•()) in let final void #t116 = self::Extension|set#field(new self::Class::•(), #t115) in #t115);
  c = let final self::Class #t117 = c{self::Class} in #t117.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t118 = let final self::Class? #t119 = self::Extension|method(new self::Class::•()) in let final void #t120 = self::Extension|set#field(new self::Class::•(), #t119) in #t119 in let final void #t121 = self::Extension|set#field(#t117, #t118) in #t118;
  let final self::Class? #t122 = c in #t122.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(self::Extension|method(#t122{self::Class}), self::Extension|get#field(new self::Class::•()));
  c = let final self::Class? #t123 = c in #t123.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t124 = self::Extension|get#field(new self::Class::•()) in let final void #t125 = self::Extension|set#field(self::Extension|method(#t123{self::Class}), #t124) in #t124;
  let final self::Class? #t126 = c in #t126.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(self::Extension|method(#t126{self::Class}), let final self::Class #t127 = new self::Class::•() in let final void #t128 = self::Extension|set#field(new self::Class::•(), #t127) in #t127);
  c = let final self::Class? #t129 = c in #t129.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t130 = let final self::Class #t131 = new self::Class::•() in let final void #t132 = self::Extension|set#field(new self::Class::•(), #t131) in #t131 in let final void #t133 = self::Extension|set#field(self::Extension|method(#t129{self::Class}), #t130) in #t130;
  let final self::Class #t134 = c{self::Class} in #t134.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(self::Extension|method(#t134), self::Extension|method(new self::Class::•()));
  c = let final self::Class #t135 = c{self::Class} in #t135.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t136 = self::Extension|method(new self::Class::•()) in let final void #t137 = self::Extension|set#field(self::Extension|method(#t135), #t136) in #t136;
  let final self::Class? #t138 = c in #t138.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(self::Extension|method(self::Extension|get#field(#t138{self::Class})));
  let final self::Class? #t139 = c in #t139.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(self::Extension|method(self::Extension|get#field(#t139{self::Class})), new self::Class::•());
  c = let final self::Class? #t140 = c in #t140.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t141 = new self::Class::•() in let final void #t142 = self::Extension|set#field(self::Extension|method(self::Extension|get#field(#t140{self::Class})), #t141) in #t141;
  let final self::Class #t143 = c{self::Class} in #t143.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(self::Extension|method(self::Extension|get#field(#t143)));
  let final self::Class #t144 = c{self::Class} in #t144.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(#t144, self::Extension|get#field(self::Extension|method(new self::Class::•())));
  c = let final self::Class #t145 = c{self::Class} in #t145.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t146 = self::Extension|get#field(self::Extension|method(new self::Class::•())) in let final void #t147 = self::Extension|set#field(#t145, #t146) in #t146;
  let final self::Class? #t148 = c in #t148.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(#t148{self::Class}, let final self::Class #t149 = new self::Class::•() in let final void #t150 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t149) in #t149);
  c = let final self::Class? #t151 = c in #t151.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t152 = let final self::Class #t153 = new self::Class::•() in let final void #t154 = self::Extension|set#field(self::Extension|method(new self::Class::•()), #t153) in #t153 in let final void #t155 = self::Extension|set#field(#t151{self::Class}, #t152) in #t152;
  let final self::Class #t156 = c{self::Class} in #t156.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(#t156, self::Extension|method(self::Extension|method(new self::Class::•())));
  c = let final self::Class #t157 = c{self::Class} in #t157.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t158 = self::Extension|method(self::Extension|method(new self::Class::•())) in let final void #t159 = self::Extension|set#field(#t157, #t158) in #t158;
  let final self::Class? #t160 = c in #t160.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(self::Extension|method(self::Extension|method(#t160{self::Class})));
  let final self::Class? #t161 = c in #t161.{core::Object::==}(null) ?{self::Class} null : self::Extension|set#field(self::Extension|method(self::Extension|method(#t161{self::Class})), new self::Class::•());
  let final self::Class? #t162 = c in #t162.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(self::Extension|method(self::Extension|method(#t162{self::Class})));
  let final self::Class? #t163 = c in #t163.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t164 = self::Extension|method(#t163{self::Class}) in #t164.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(#t164{self::Class});
  self::throws(() → self::Class? => self::Extension|get#field(let final self::Class? #t165 = c in #t165.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(#t165{self::Class})));
  let final self::Class? #t166 = let final self::Class? #t167 = c in #t167.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(#t167{self::Class}) in #t166.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(#t166{self::Class});
}
static method indexAccess(self::Class? c) → void {
  let final self::Class? #t168 = c in #t168.{core::Object::==}(null) ?{self::Class?} null : self::Extension|[](#t168{self::Class}, c{self::Class});
  let final self::Class? #t169 = c in #t169.{core::Object::==}(null) ?{void} null : self::Extension|[]=(#t169{self::Class}, c{self::Class}, new self::Class::•());
  let final self::Class? #t170 = c in #t170.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(self::Extension|[](#t170{self::Class}, c{self::Class}));
  let final self::Class? #t171 = c in #t171.{core::Object::==}(null) ?{self::Class?} null : self::Extension|[](self::Extension|get#field(#t171{self::Class}), c{self::Class});
  let final self::Class? #t172 = c in #t172.{core::Object::==}(null) ?{self::Class} null : self::Extension|[]=(self::Extension|get#field(#t172{self::Class}), c{self::Class}, new self::Class::•());
  c = let final self::Class? #t173 = c in #t173.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t174 = self::Extension|get#field(#t173{self::Class}) in let final self::Class #t175 = c{self::Class} in let final self::Class #t176 = new self::Class::•() in let final void #t177 = self::Extension|[]=(#t174, #t175, #t176) in #t176;
  let final self::Class #t178 = c{self::Class} in #t178.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(self::Extension|[](self::Extension|get#field(#t178), c{self::Class}));
  let final self::Class #t179 = c{self::Class} in #t179.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t180 = self::Extension|get#field(#t179) in let final self::Class #t181 = c{self::Class} in self::Extension|[]=(#t180, #t181, self::Extension|+(self::Extension|[](#t180, #t181), 0));
  c = let final self::Class #t182 = c{self::Class} in #t182.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t183 = self::Extension|get#field(#t182) in let final self::Class #t184 = c{self::Class} in let final self::Class? #t185 = self::Extension|+(self::Extension|[](#t183, #t184), 0) in let final void #t186 = self::Extension|[]=(#t183, #t184, #t185) in #t185;
  let final self::Class? #t187 = c in #t187.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t188 = c{self::Class} in self::Extension|[](#t187{self::Class}, #t188).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t187{self::Class}, #t188, c{self::Class}) : null;
  c = let final self::Class? #t189 = c in #t189.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t190 = c{self::Class} in let final self::Class? #t191 = self::Extension|[](#t189{self::Class}, #t190) in #t191.{core::Object::==}(null) ?{self::Class} let final self::Class #t192 = c{self::Class} in let final void #t193 = self::Extension|[]=(#t189{self::Class}, #t190, #t192) in #t192 : #t191;
  let final self::Class #t194 = c{self::Class} in #t194.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t195 = c{self::Class} in self::Extension|[]=(#t194, #t195, self::Extension|+(self::Extension|[](#t194, #t195), 0));
  c = let final self::Class #t196 = c{self::Class} in #t196.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t197 = c{self::Class} in let final self::Class? #t198 = self::Extension|+(self::Extension|[](#t196, #t197), 0) in let final void #t199 = self::Extension|[]=(#t196, #t197, #t198) in #t198;
  let final self::Class? #t200 = c in #t200.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t201 = c{self::Class} in self::Extension|[]=(#t200{self::Class}, #t201, self::Extension|+(self::Extension|[](#t200{self::Class}, #t201), 0));
  c = let final self::Class? #t202 = c in #t202.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t203 = c{self::Class} in let final self::Class? #t204 = self::Extension|+(self::Extension|[](#t202{self::Class}, #t203), 0) in let final void #t205 = self::Extension|[]=(#t202{self::Class}, #t203, #t204) in #t204;
  let final self::Class? #t206 = c in #t206.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t207 = c{self::Class} in self::Extension|[]=(#t206{self::Class}, #t207, self::Extension|+(self::Extension|[](#t206{self::Class}, #t207), 1));
  c = let final self::Class? #t208 = c in #t208.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t209 = c{self::Class} in let final self::Class? #t210 = self::Extension|[](#t208{self::Class}, #t209) in let final void #t211 = self::Extension|[]=(#t208{self::Class}, #t209, self::Extension|+(#t210, 1)) in #t210;
  let final self::Class? #t212 = c in #t212.{core::Object::==}(null) ?{self::Class?} null : self::Extension|[](#t212{self::Class}, c{self::Class});
  c = let final self::Class? #t213 = c in #t213.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t214 = c{self::Class} in let final self::Class? #t215 = self::Extension|+(self::Extension|[](#t213{self::Class}, #t214), 1) in let final void #t216 = self::Extension|[]=(#t213{self::Class}, #t214, #t215) in #t215;
  let final self::Class? #t217 = c in #t217.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t218 = self::Extension|get#field(#t217{self::Class}) in let final self::Class #t219 = c{self::Class} in self::Extension|[]=(#t218, #t219, self::Extension|+(self::Extension|[](#t218, #t219), 1));
  c = let final self::Class? #t220 = c in #t220.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t221 = self::Extension|get#field(#t220{self::Class}) in let final self::Class #t222 = c{self::Class} in let final self::Class? #t223 = self::Extension|[](#t221, #t222) in let final void #t224 = self::Extension|[]=(#t221, #t222, self::Extension|+(#t223, 1)) in #t223;
  let final self::Class? #t225 = c in #t225.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t226 = self::Extension|get#field(#t225{self::Class}) in let final self::Class #t227 = c{self::Class} in let final self::Class? #t228 = self::Extension|+(self::Extension|[](#t226, #t227), 1) in let final void #t229 = self::Extension|[]=(#t226, #t227, #t228) in #t228;
  c = let final self::Class? #t230 = c in #t230.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t231 = self::Extension|get#field(#t230{self::Class}) in let final self::Class #t232 = c{self::Class} in let final self::Class? #t233 = self::Extension|+(self::Extension|[](#t231, #t232), 1) in let final void #t234 = self::Extension|[]=(#t231, #t232, #t233) in #t233;
  let final self::Class? #t235 = c in #t235.{core::Object::==}(null) ?{self::Class?} null : self::Extension|[](self::Extension|[](self::Extension|get#field(#t235{self::Class}), c{self::Class}), c{self::Class});
  let final self::Class? #t236 = c in #t236.{core::Object::==}(null) ?{self::Class} null : self::Extension|[]=(self::Extension|[](self::Extension|get#field(#t236{self::Class}), c{self::Class}), c{self::Class}, new self::Class::•());
  c = let final self::Class? #t237 = c in #t237.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t238 = self::Extension|[](self::Extension|get#field(#t237{self::Class}), c{self::Class}) in let final self::Class #t239 = c{self::Class} in let final self::Class #t240 = new self::Class::•() in let final void #t241 = self::Extension|[]=(#t238, #t239, #t240) in #t240;
  let final self::Class #t242 = c{self::Class} in #t242.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(self::Extension|[](self::Extension|[](self::Extension|get#field(#t242), c{self::Class}), c{self::Class}));
  let final self::Class #t243 = c{self::Class} in #t243.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t244 = self::Extension|[](self::Extension|get#field(#t243), c{self::Class}) in let final self::Class #t245 = c{self::Class} in self::Extension|[]=(#t244, #t245, self::Extension|+(self::Extension|[](#t244, #t245), 0));
  c = let final self::Class #t246 = c{self::Class} in #t246.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t247 = self::Extension|[](self::Extension|get#field(#t246), c{self::Class}) in let final self::Class #t248 = c{self::Class} in let final self::Class? #t249 = self::Extension|+(self::Extension|[](#t247, #t248), 0) in let final void #t250 = self::Extension|[]=(#t247, #t248, #t249) in #t249;
  let final self::Class? #t251 = c in #t251.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t252 = self::Extension|[](self::Extension|get#field(#t251{self::Class}), c{self::Class}) in let final self::Class #t253 = c{self::Class} in self::Extension|[]=(#t252, #t253, self::Extension|+(self::Extension|[](#t252, #t253), 1));
  c = let final self::Class? #t254 = c in #t254.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t255 = self::Extension|[](self::Extension|get#field(#t254{self::Class}), c{self::Class}) in let final self::Class #t256 = c{self::Class} in let final self::Class? #t257 = self::Extension|[](#t255, #t256) in let final void #t258 = self::Extension|[]=(#t255, #t256, self::Extension|+(#t257, 1)) in #t257;
  let final self::Class? #t259 = c in #t259.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t260 = self::Extension|[](self::Extension|get#field(#t259{self::Class}), c{self::Class}) in let final self::Class #t261 = c{self::Class} in let final self::Class? #t262 = self::Extension|+(self::Extension|[](#t260, #t261), 1) in let final void #t263 = self::Extension|[]=(#t260, #t261, #t262) in #t262;
  c = let final self::Class? #t264 = c in #t264.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t265 = self::Extension|[](self::Extension|get#field(#t264{self::Class}), c{self::Class}) in let final self::Class #t266 = c{self::Class} in let final self::Class? #t267 = self::Extension|+(self::Extension|[](#t265, #t266), 1) in let final void #t268 = self::Extension|[]=(#t265, #t266, #t267) in #t267;
  let final self::Class? #t269 = c in #t269.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t270 = self::Extension|[](#t269{self::Class}, c{self::Class}) in #t270.{core::Object::==}(null) ?{self::Class?} null : self::Extension|[](#t270{self::Class}, c{self::Class});
  let final self::Class? #t271 = c in #t271.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t272 = self::Extension|[](#t271{self::Class}, c{self::Class}) in #t272.{core::Object::==}(null) ?{self::Class} null : self::Extension|[]=(#t272{self::Class}, c{self::Class}, new self::Class::•());
  c = let final self::Class? #t273 = c in #t273.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t274 = self::Extension|[](#t273{self::Class}, c{self::Class}) in #t274.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t275 = c{self::Class} in let final self::Class #t276 = new self::Class::•() in let final void #t277 = self::Extension|[]=(#t274{self::Class}, #t275, #t276) in #t276;
  let final self::Class #t278 = c{self::Class} in #t278.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t279 = self::Extension|[](#t278, c{self::Class}) in #t279.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(self::Extension|[](#t279{self::Class}, c{self::Class}));
  c = let final self::Class #t280 = c{self::Class} in #t280.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t281 = self::Extension|[](#t280, c{self::Class}) in #t281.{core::Object::==}(null) ?{self::Class?} null : self::Extension|method(self::Extension|[](#t281{self::Class}, c{self::Class}));
  let final self::Class? #t282 = c in #t282.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t283 = self::Extension|[](#t282{self::Class}, c{self::Class}) in #t283.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t284 = c{self::Class} in self::Extension|[](#t283{self::Class}, #t284).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t283{self::Class}, #t284, c{self::Class}) : null;
  c = let final self::Class? #t285 = c in #t285.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t286 = self::Extension|[](#t285{self::Class}, c{self::Class}) in #t286.{core::Object::==}(null) ?{self::Class} null : let final self::Class #t287 = c{self::Class} in let final self::Class? #t288 = self::Extension|[](#t286{self::Class}, #t287) in #t288.{core::Object::==}(null) ?{self::Class} let final self::Class #t289 = c{self::Class} in let final void #t290 = self::Extension|[]=(#t286{self::Class}, #t287, #t289) in #t289 : #t288;
  let final self::Class #t291 = c{self::Class} in #t291.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t292 = self::Extension|[](#t291, c{self::Class}) in #t292.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t293 = c{self::Class} in self::Extension|[]=(#t292{self::Class}, #t293, self::Extension|+(self::Extension|[](#t292{self::Class}, #t293), 0));
  c = let final self::Class #t294 = c{self::Class} in #t294.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t295 = self::Extension|[](#t294, c{self::Class}) in #t295.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t296 = c{self::Class} in let final self::Class? #t297 = self::Extension|+(self::Extension|[](#t295{self::Class}, #t296), 0) in let final void #t298 = self::Extension|[]=(#t295{self::Class}, #t296, #t297) in #t297;
  let final self::Class? #t299 = c in #t299.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t300 = self::Extension|[](#t299{self::Class}, c{self::Class}) in #t300.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t301 = c{self::Class} in self::Extension|[]=(#t300{self::Class}, #t301, self::Extension|+(self::Extension|[](#t300{self::Class}, #t301), 1));
  c = let final self::Class? #t302 = c in #t302.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t303 = self::Extension|[](#t302{self::Class}, c{self::Class}) in #t303.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t304 = c{self::Class} in let final self::Class? #t305 = self::Extension|[](#t303{self::Class}, #t304) in let final void #t306 = self::Extension|[]=(#t303{self::Class}, #t304, self::Extension|+(#t305, 1)) in #t305;
  let final self::Class? #t307 = c in #t307.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t308 = self::Extension|[](#t307{self::Class}, c{self::Class}) in #t308.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t309 = c{self::Class} in let final self::Class? #t310 = self::Extension|+(self::Extension|[](#t308{self::Class}, #t309), 1) in let final void #t311 = self::Extension|[]=(#t308{self::Class}, #t309, #t310) in #t310;
  c = let final self::Class? #t312 = c in #t312.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t313 = self::Extension|[](#t312{self::Class}, c{self::Class}) in #t313.{core::Object::==}(null) ?{self::Class?} null : let final self::Class #t314 = c{self::Class} in let final self::Class? #t315 = self::Extension|+(self::Extension|[](#t313{self::Class}, #t314), 1) in let final void #t316 = self::Extension|[]=(#t313{self::Class}, #t314, #t315) in #t315;
}
static method operatorAccess(self::Class? c) → void {
  self::throws(() → self::Class? => self::Extension|+(let final self::Class? #t317 = c in #t317.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(#t317{self::Class}), 0));
  self::throws(() → self::Class? => self::Extension|unary-(let final self::Class? #t318 = c in #t318.{core::Object::==}(null) ?{self::Class?} null : self::Extension|get#field(#t318{self::Class})));
  let final self::Class? #t319 = c in #t319.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(#t319{self::Class}, self::Extension|+(self::Extension|get#field(#t319{self::Class}), 0));
  c = let final self::Class? #t320 = c in #t320.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t321 = self::Extension|+(self::Extension|get#field(#t320{self::Class}), 0) in let final void #t322 = self::Extension|set#field(#t320{self::Class}, #t321) in #t321;
  let final self::Class? #t323 = c in #t323.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t324 = self::Extension|get#field(#t323{self::Class}) in self::Extension|set#field(#t324, self::Extension|+(self::Extension|get#field(#t324), 0));
  c = let final self::Class? #t325 = c in #t325.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t326 = self::Extension|get#field(#t325{self::Class}) in let final self::Class? #t327 = self::Extension|+(self::Extension|get#field(#t326), 0) in let final void #t328 = self::Extension|set#field(#t326, #t327) in #t327;
  let final self::Class? #t329 = c in #t329.{core::Object::==}(null) ?{self::Class?} null : self::Extension|set#field(#t329{self::Class}, self::Extension|+(self::Extension|get#field(#t329{self::Class}), 1));
  c = let final self::Class? #t330 = c in #t330.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t331 = self::Extension|get#field(#t330{self::Class}) in let final self::Class? #t332 = let final self::Class? #t333 = self::Extension|+(#t331, 1) in let final void #t334 = self::Extension|set#field(#t330{self::Class}, #t333) in #t333 in #t331;
  let final self::Class? #t335 = c in #t335.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t336 = self::Extension|+(self::Extension|get#field(#t335{self::Class}), 1) in let final void #t337 = self::Extension|set#field(#t335{self::Class}, #t336) in #t336;
  c = let final self::Class? #t338 = c in #t338.{core::Object::==}(null) ?{self::Class?} null : let final self::Class? #t339 = self::Extension|+(self::Extension|get#field(#t338{self::Class}), 1) in let final void #t340 = self::Extension|set#field(#t338{self::Class}, #t339) in #t339;
}
static method ifNull(self::Class? c) → void {
  let final self::Class? #t341 = c in #t341.{core::Object::==}(null) ?{self::Class} null : self::Extension|get#field(#t341{self::Class}).{core::Object::==}(null) ?{self::Class} self::Extension|set#field(#t341{self::Class}, c{self::Class}) : null;
  c = let final self::Class? #t342 = c in #t342.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t343 = self::Extension|get#field(#t342{self::Class}) in #t343.{core::Object::==}(null) ?{self::Class} let final self::Class #t344 = c{self::Class} in let final void #t345 = self::Extension|set#field(#t342{self::Class}, #t344) in #t344 : #t343;
  let final self::Class #t346 = c{self::Class} in #t346.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t347 = self::Extension|get#field(#t346) in self::Extension|get#field(#t347).{core::Object::==}(null) ?{self::Class} self::Extension|set#field(#t347, c{self::Class}) : null;
  c = let final self::Class #t348 = c{self::Class} in #t348.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t349 = self::Extension|get#field(#t348) in let final self::Class? #t350 = self::Extension|get#field(#t349) in #t350.{core::Object::==}(null) ?{self::Class} let final self::Class #t351 = c{self::Class} in let final void #t352 = self::Extension|set#field(#t349, #t351) in #t351 : #t350;
  let final self::Class #t353 = c{self::Class} in #t353.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t354 = self::Extension|get#field(#t353) in let final self::Class #t355 = c{self::Class} in self::Extension|[](#t354, #t355).{core::Object::==}(null) ?{self::Class} self::Extension|[]=(#t354, #t355, c{self::Class}) : null;
  c = let final self::Class #t356 = c{self::Class} in #t356.{core::Object::==}(null) ?{self::Class} null : let final self::Class? #t357 = self::Extension|get#field(#t356) in let final self::Class #t358 = c{self::Class} in let final self::Class? #t359 = self::Extension|[](#t357, #t358) in #t359.{core::Object::==}(null) ?{self::Class} let final self::Class #t360 = c{self::Class} in let final void #t361 = self::Extension|[]=(#t357, #t358, #t360) in #t360 : #t359;
}
static method throws(() → void f) → void {
  try {
    f.call();
  }
  on dynamic catch(final dynamic _) {
    return;
  }
  throw "Expected exception.";
}
