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::•()
    ;
  method method() → self::Class*
    return this.{self::Class::field};
  operator [](self::Class* key) → self::Class*
    return this.{self::Class::field};
  operator []=(self::Class* key, self::Class* value) → void {
    this.{self::Class::field} = value;
  }
  operator +(core::int* value) → self::Class*
    return this.{self::Class::field};
  operator unary-() → self::Class*
    return this.{self::Class::field};
}
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 : #t1.{self::Class::field};
  let final self::Class* #t2 = c in #t2.{core::Object::==}(null) ?{self::Class*} null : #t2.{self::Class::field} = new self::Class::•();
  c = let final self::Class* #t3 = c in #t3.{core::Object::==}(null) ?{self::Class*} null : #t3.{self::Class::field} = new self::Class::•();
  let final self::Class* #t4 = c in #t4.{core::Object::==}(null) ?{self::Class*} null : #t4.{self::Class::method}();
  self::throws(() → self::Class* => (let final self::Class* #t5 = c in #t5.{core::Object::==}(null) ?{self::Class*} null : #t5.{self::Class::field}).{self::Class::field});
  let final self::Class* #t6 = let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{self::Class*} null : #t7.{self::Class::field} in #t6.{core::Object::==}(null) ?{self::Class*} null : #t6.{self::Class::field};
  self::throws(() → self::Class* => let final self::Class* #t8 = (let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{self::Class*} null : #t9.{self::Class::field}).{self::Class::field} in #t8.{core::Object::==}(null) ?{self::Class*} null : #t8.{self::Class::field});
  self::throws(() → self::Class* => (let final self::Class* #t10 = c in #t10.{core::Object::==}(null) ?{self::Class*} null : #t10.{self::Class::field}).{self::Class::field} = new self::Class::•());
  let final self::Class* #t11 = let final self::Class* #t12 = c in #t12.{core::Object::==}(null) ?{self::Class*} null : #t12.{self::Class::field} in #t11.{core::Object::==}(null) ?{self::Class*} null : #t11.{self::Class::field} = new self::Class::•();
  self::throws(() → self::Class* => let final self::Class* #t13 = (let final self::Class* #t14 = c in #t14.{core::Object::==}(null) ?{self::Class*} null : #t14.{self::Class::field}).{self::Class::field} in #t13.{core::Object::==}(null) ?{self::Class*} null : #t13.{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => (let final self::Class* #t15 = c in #t15.{core::Object::==}(null) ?{self::Class*} null : #t15.{self::Class::field}).{self::Class::field});
  self::throws(() → self::Class* => (let final self::Class* #t16 = c in #t16.{core::Object::==}(null) ?{self::Class*} null : #t16.{self::Class::field} = new self::Class::•()).{self::Class::field});
  self::throws(() → self::Class* => (let final self::Class* #t17 = c in #t17.{core::Object::==}(null) ?{self::Class*} null : #t17.{self::Class::method}()).{self::Class::field});
  self::throws(() → self::Class* => c = (let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{self::Class*} null : #t18.{self::Class::field}).{self::Class::field} = new self::Class::•());
  c = let final self::Class* #t19 = let final self::Class* #t20 = c in #t20.{core::Object::==}(null) ?{self::Class*} null : #t20.{self::Class::field} in #t19.{core::Object::==}(null) ?{self::Class*} null : #t19.{self::Class::field} = new self::Class::•();
  self::throws(() → self::Class* => c = let final self::Class* #t21 = (let final self::Class* #t22 = c in #t22.{core::Object::==}(null) ?{self::Class*} null : #t22.{self::Class::field}).{self::Class::field} in #t21.{core::Object::==}(null) ?{self::Class*} null : #t21.{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => (let final self::Class* #t23 = c in #t23.{core::Object::==}(null) ?{self::Class*} null : #t23.{self::Class::field}).{self::Class::method}());
  let final self::Class* #t24 = c in #t24.{core::Object::==}(null) ?{self::Class*} null : #t24.{self::Class::field} = new self::Class::•().{self::Class::field};
  c = let final self::Class* #t25 = c in #t25.{core::Object::==}(null) ?{self::Class*} null : #t25.{self::Class::field} = new self::Class::•().{self::Class::field};
  let final self::Class* #t26 = c in #t26.{core::Object::==}(null) ?{self::Class*} null : #t26.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
  c = let final self::Class* #t27 = c in #t27.{core::Object::==}(null) ?{self::Class*} null : #t27.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
  let final self::Class* #t28 = c in #t28.{core::Object::==}(null) ?{self::Class*} null : #t28.{self::Class::field} = new self::Class::•().{self::Class::method}();
  c = let final self::Class* #t29 = c in #t29.{core::Object::==}(null) ?{self::Class*} null : #t29.{self::Class::field} = new self::Class::•().{self::Class::method}();
  self::throws(() → self::Class* => (let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{self::Class*} null : #t30.{self::Class::method}()).{self::Class::field});
  self::throws(() → self::Class* => (let final self::Class* #t31 = c in #t31.{core::Object::==}(null) ?{self::Class*} null : #t31.{self::Class::method}()).{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => (let final self::Class* #t32 = c in #t32.{core::Object::==}(null) ?{self::Class*} null : #t32.{self::Class::method}()).{self::Class::method}());
  self::throws(() → self::Class* => (let final self::Class* #t33 = c in #t33.{core::Object::==}(null) ?{self::Class*} null : #t33.{self::Class::field}).{self::Class::field}.{self::Class::field});
  self::throws(() → self::Class* => (let final self::Class* #t34 = c in #t34.{core::Object::==}(null) ?{self::Class*} null : #t34.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => c = (let final self::Class* #t35 = c in #t35.{core::Object::==}(null) ?{self::Class*} null : #t35.{self::Class::field}).{self::Class::field}.{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => (let final self::Class* #t36 = c in #t36.{core::Object::==}(null) ?{self::Class*} null : #t36.{self::Class::field}).{self::Class::field}.{self::Class::method}());
  let final self::Class* #t37 = c in #t37.{core::Object::==}(null) ?{self::Class*} null : #t37.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
  c = let final self::Class* #t38 = c in #t38.{core::Object::==}(null) ?{self::Class*} null : #t38.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field};
  let final self::Class* #t39 = c in #t39.{core::Object::==}(null) ?{self::Class*} null : #t39.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
  c = let final self::Class* #t40 = c in #t40.{core::Object::==}(null) ?{self::Class*} null : #t40.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::field} = new self::Class::•();
  let final self::Class* #t41 = c in #t41.{core::Object::==}(null) ?{self::Class*} null : #t41.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
  c = let final self::Class* #t42 = c in #t42.{core::Object::==}(null) ?{self::Class*} null : #t42.{self::Class::field} = new self::Class::•().{self::Class::field}.{self::Class::method}();
  self::throws(() → self::Class* => (let final self::Class* #t43 = c in #t43.{core::Object::==}(null) ?{self::Class*} null : #t43.{self::Class::method}()).{self::Class::field}.{self::Class::field});
  self::throws(() → self::Class* => (let final self::Class* #t44 = c in #t44.{core::Object::==}(null) ?{self::Class*} null : #t44.{self::Class::method}()).{self::Class::field}.{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => (let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{self::Class*} null : #t45.{self::Class::method}()).{self::Class::field}.{self::Class::method}());
  self::throws(() → self::Class* => (let final self::Class* #t46 = c in #t46.{core::Object::==}(null) ?{self::Class*} null : #t46.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
  self::throws(() → self::Class* => c = (let final self::Class* #t47 = c in #t47.{core::Object::==}(null) ?{self::Class*} null : #t47.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field});
  self::throws(() → self::Class* => (let final self::Class* #t48 = c in #t48.{core::Object::==}(null) ?{self::Class*} null : #t48.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => c = (let final self::Class* #t49 = c in #t49.{core::Object::==}(null) ?{self::Class*} null : #t49.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => (let final self::Class* #t50 = c in #t50.{core::Object::==}(null) ?{self::Class*} null : #t50.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
  self::throws(() → self::Class* => c = (let final self::Class* #t51 = c in #t51.{core::Object::==}(null) ?{self::Class*} null : #t51.{self::Class::field}).{self::Class::field} = new self::Class::•().{self::Class::method}());
  let final self::Class* #t52 = c in #t52.{core::Object::==}(null) ?{self::Class*} null : #t52.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
  c = let final self::Class* #t53 = c in #t53.{core::Object::==}(null) ?{self::Class*} null : #t53.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field};
  let final self::Class* #t54 = c in #t54.{core::Object::==}(null) ?{self::Class*} null : #t54.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
  c = let final self::Class* #t55 = c in #t55.{core::Object::==}(null) ?{self::Class*} null : #t55.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•();
  let final self::Class* #t56 = c in #t56.{core::Object::==}(null) ?{self::Class*} null : #t56.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
  c = let final self::Class* #t57 = c in #t57.{core::Object::==}(null) ?{self::Class*} null : #t57.{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•().{self::Class::method}();
  self::throws(() → self::Class* => (let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{self::Class*} null : #t58.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
  self::throws(() → self::Class* => c = (let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{self::Class*} null : #t59.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field});
  self::throws(() → self::Class* => (let final self::Class* #t60 = c in #t60.{core::Object::==}(null) ?{self::Class*} null : #t60.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => c = (let final self::Class* #t61 = c in #t61.{core::Object::==}(null) ?{self::Class*} null : #t61.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => (let final self::Class* #t62 = c in #t62.{core::Object::==}(null) ?{self::Class*} null : #t62.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
  self::throws(() → self::Class* => c = (let final self::Class* #t63 = c in #t63.{core::Object::==}(null) ?{self::Class*} null : #t63.{self::Class::method}()).{self::Class::field} = new self::Class::•().{self::Class::method}());
  self::throws(() → self::Class* => (let final self::Class* #t64 = c in #t64.{core::Object::==}(null) ?{self::Class*} null : #t64.{self::Class::field}).{self::Class::method}().{self::Class::field});
  self::throws(() → self::Class* => (let final self::Class* #t65 = c in #t65.{core::Object::==}(null) ?{self::Class*} null : #t65.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => c = (let final self::Class* #t66 = c in #t66.{core::Object::==}(null) ?{self::Class*} null : #t66.{self::Class::field}).{self::Class::method}().{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => (let final self::Class* #t67 = c in #t67.{core::Object::==}(null) ?{self::Class*} null : #t67.{self::Class::field}).{self::Class::method}().{self::Class::method}());
  let final self::Class* #t68 = c in #t68.{core::Object::==}(null) ?{self::Class*} null : #t68.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
  c = let final self::Class* #t69 = c in #t69.{core::Object::==}(null) ?{self::Class*} null : #t69.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field};
  let final self::Class* #t70 = c in #t70.{core::Object::==}(null) ?{self::Class*} null : #t70.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
  c = let final self::Class* #t71 = c in #t71.{core::Object::==}(null) ?{self::Class*} null : #t71.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::field} = new self::Class::•();
  let final self::Class* #t72 = c in #t72.{core::Object::==}(null) ?{self::Class*} null : #t72.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
  c = let final self::Class* #t73 = c in #t73.{core::Object::==}(null) ?{self::Class*} null : #t73.{self::Class::field} = new self::Class::•().{self::Class::method}().{self::Class::method}();
  self::throws(() → self::Class* => (let final self::Class* #t74 = c in #t74.{core::Object::==}(null) ?{self::Class*} null : #t74.{self::Class::method}()).{self::Class::method}().{self::Class::field});
  self::throws(() → self::Class* => (let final self::Class* #t75 = c in #t75.{core::Object::==}(null) ?{self::Class*} null : #t75.{self::Class::method}()).{self::Class::method}().{self::Class::field} = new self::Class::•());
  self::throws(() → self::Class* => (let final self::Class* #t76 = c in #t76.{core::Object::==}(null) ?{self::Class*} null : #t76.{self::Class::method}()).{self::Class::method}().{self::Class::method}());
  let final self::Class* #t77 = let final self::Class* #t78 = c in #t78.{core::Object::==}(null) ?{self::Class*} null : #t78.{self::Class::method}() in #t77.{core::Object::==}(null) ?{self::Class*} null : #t77.{self::Class::method}();
}
static method indexAccess(self::Class* c) → void {
  self::throws(() → self::Class* => (let final self::Class* #t79 = c in #t79.{core::Object::==}(null) ?{self::Class*} null : #t79.{self::Class::field}).{self::Class::[]}(c));
  self::throws(() → self::Class* => let final self::Class* #t80 = let final self::Class* #t81 = c in #t81.{core::Object::==}(null) ?{self::Class*} null : #t81.{self::Class::field} in let final self::Class* #t82 = c in let final self::Class* #t83 = new self::Class::•() in let final void #t84 = #t80.{self::Class::[]=}(#t82, #t83) in #t83);
  self::throws(() → self::Class* => c = let final self::Class* #t85 = let final self::Class* #t86 = c in #t86.{core::Object::==}(null) ?{self::Class*} null : #t86.{self::Class::field} in let final self::Class* #t87 = c in let final self::Class* #t88 = new self::Class::•() in let final void #t89 = #t85.{self::Class::[]=}(#t87, #t88) in #t88);
  self::throws(() → self::Class* => (let final self::Class* #t90 = c in #t90.{core::Object::==}(null) ?{self::Class*} null : #t90.{self::Class::field}).{self::Class::[]}(c).{self::Class::method}());
  self::throws(() → self::Class* => let final self::Class* #t91 = let final self::Class* #t92 = c in #t92.{core::Object::==}(null) ?{self::Class*} null : #t92.{self::Class::field} in let final self::Class* #t93 = c in let final self::Class* #t94 = #t91.{self::Class::[]}(#t93).{self::Class::+}(0) in let final void #t95 = #t91.{self::Class::[]=}(#t93, #t94) in #t94);
  self::throws(() → self::Class* => c = let final self::Class* #t96 = let final self::Class* #t97 = c in #t97.{core::Object::==}(null) ?{self::Class*} null : #t97.{self::Class::field} in let final self::Class* #t98 = c in let final self::Class* #t99 = #t96.{self::Class::[]}(#t98).{self::Class::+}(0) in let final void #t100 = #t96.{self::Class::[]=}(#t98, #t99) in #t99);
  self::throws(() → self::Class* => let final self::Class* #t101 = let final self::Class* #t102 = c in #t102.{core::Object::==}(null) ?{self::Class*} null : #t102.{self::Class::field} in let final self::Class* #t103 = c in let final self::Class* #t104 = #t101.{self::Class::[]}(#t103) in let final void #t105 = #t101.{self::Class::[]=}(#t103, #t104.{self::Class::+}(1)) in #t104);
  self::throws(() → self::Class* => c = let final self::Class* #t106 = let final self::Class* #t107 = c in #t107.{core::Object::==}(null) ?{self::Class*} null : #t107.{self::Class::field} in let final self::Class* #t108 = c in let final self::Class* #t109 = #t106.{self::Class::[]}(#t108) in let final void #t110 = #t106.{self::Class::[]=}(#t108, #t109.{self::Class::+}(1)) in #t109);
  self::throws(() → self::Class* => let final self::Class* #t111 = let final self::Class* #t112 = c in #t112.{core::Object::==}(null) ?{self::Class*} null : #t112.{self::Class::field} in let final self::Class* #t113 = c in let final self::Class* #t114 = #t111.{self::Class::[]}(#t113).{self::Class::+}(1) in let final void #t115 = #t111.{self::Class::[]=}(#t113, #t114) in #t114);
  self::throws(() → self::Class* => c = let final self::Class* #t116 = let final self::Class* #t117 = c in #t117.{core::Object::==}(null) ?{self::Class*} null : #t117.{self::Class::field} in let final self::Class* #t118 = c in let final self::Class* #t119 = #t116.{self::Class::[]}(#t118).{self::Class::+}(1) in let final void #t120 = #t116.{self::Class::[]=}(#t118, #t119) in #t119);
  self::throws(() → self::Class* => (let final self::Class* #t121 = c in #t121.{core::Object::==}(null) ?{self::Class*} null : #t121.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c));
  self::throws(() → self::Class* => let final self::Class* #t122 = (let final self::Class* #t123 = c in #t123.{core::Object::==}(null) ?{self::Class*} null : #t123.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t124 = c in let final self::Class* #t125 = new self::Class::•() in let final void #t126 = #t122.{self::Class::[]=}(#t124, #t125) in #t125);
  self::throws(() → self::Class* => c = let final self::Class* #t127 = (let final self::Class* #t128 = c in #t128.{core::Object::==}(null) ?{self::Class*} null : #t128.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t129 = c in let final self::Class* #t130 = new self::Class::•() in let final void #t131 = #t127.{self::Class::[]=}(#t129, #t130) in #t130);
  self::throws(() → self::Class* => (let final self::Class* #t132 = c in #t132.{core::Object::==}(null) ?{self::Class*} null : #t132.{self::Class::field}).{self::Class::[]}(c).{self::Class::[]}(c).{self::Class::method}());
  self::throws(() → self::Class* => let final self::Class* #t133 = (let final self::Class* #t134 = c in #t134.{core::Object::==}(null) ?{self::Class*} null : #t134.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t135 = c in let final self::Class* #t136 = #t133.{self::Class::[]}(#t135).{self::Class::+}(0) in let final void #t137 = #t133.{self::Class::[]=}(#t135, #t136) in #t136);
  self::throws(() → self::Class* => c = let final self::Class* #t138 = (let final self::Class* #t139 = c in #t139.{core::Object::==}(null) ?{self::Class*} null : #t139.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t140 = c in let final self::Class* #t141 = #t138.{self::Class::[]}(#t140).{self::Class::+}(0) in let final void #t142 = #t138.{self::Class::[]=}(#t140, #t141) in #t141);
  self::throws(() → self::Class* => let final self::Class* #t143 = (let final self::Class* #t144 = c in #t144.{core::Object::==}(null) ?{self::Class*} null : #t144.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t145 = c in let final self::Class* #t146 = #t143.{self::Class::[]}(#t145) in let final void #t147 = #t143.{self::Class::[]=}(#t145, #t146.{self::Class::+}(1)) in #t146);
  self::throws(() → self::Class* => c = let final self::Class* #t148 = (let final self::Class* #t149 = c in #t149.{core::Object::==}(null) ?{self::Class*} null : #t149.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t150 = c in let final self::Class* #t151 = #t148.{self::Class::[]}(#t150) in let final void #t152 = #t148.{self::Class::[]=}(#t150, #t151.{self::Class::+}(1)) in #t151);
  self::throws(() → self::Class* => let final self::Class* #t153 = (let final self::Class* #t154 = c in #t154.{core::Object::==}(null) ?{self::Class*} null : #t154.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t155 = c in let final self::Class* #t156 = #t153.{self::Class::[]}(#t155).{self::Class::+}(1) in let final void #t157 = #t153.{self::Class::[]=}(#t155, #t156) in #t156);
  self::throws(() → self::Class* => c = let final self::Class* #t158 = (let final self::Class* #t159 = c in #t159.{core::Object::==}(null) ?{self::Class*} null : #t159.{self::Class::field}).{self::Class::[]}(c) in let final self::Class* #t160 = c in let final self::Class* #t161 = #t158.{self::Class::[]}(#t160).{self::Class::+}(1) in let final void #t162 = #t158.{self::Class::[]=}(#t160, #t161) in #t161);
}
static method operatorAccess(self::Class* c) → void {
  self::throws(() → self::Class* => (let final self::Class* #t163 = c in #t163.{core::Object::==}(null) ?{self::Class*} null : #t163.{self::Class::field}).{self::Class::+}(0));
  self::throws(() → self::Class* => (let final self::Class* #t164 = c in #t164.{core::Object::==}(null) ?{self::Class*} null : #t164.{self::Class::field}).{self::Class::unary-}());
  let final self::Class* #t165 = c in #t165.{core::Object::==}(null) ?{self::Class*} null : #t165.{self::Class::field} = #t165.{self::Class::field}.{self::Class::+}(0);
  c = let final self::Class* #t166 = c in #t166.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t167 = #t166.{self::Class::field}.{self::Class::+}(0) in let final void #t168 = #t166.{self::Class::field} = #t167 in #t167;
  self::throws(() → self::Class* => let final self::Class* #t169 = let final self::Class* #t170 = c in #t170.{core::Object::==}(null) ?{self::Class*} null : #t170.{self::Class::field} in #t169.{self::Class::field} = #t169.{self::Class::field}.{self::Class::+}(0));
  self::throws(() → self::Class* => c = let final self::Class* #t171 = let final self::Class* #t172 = c in #t172.{core::Object::==}(null) ?{self::Class*} null : #t172.{self::Class::field} in #t171.{self::Class::field} = #t171.{self::Class::field}.{self::Class::+}(0));
  let final self::Class* #t173 = c in #t173.{core::Object::==}(null) ?{self::Class*} null : #t173.{self::Class::field} = #t173.{self::Class::field}.{self::Class::+}(1);
  c = let final self::Class* #t174 = c in #t174.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t175 = #t174.{self::Class::field} in let final void #t176 = #t174.{self::Class::field} = #t175.{self::Class::+}(1) in #t175;
  let final self::Class* #t177 = c in #t177.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t178 = #t177.{self::Class::field}.{self::Class::+}(1) in let final void #t179 = #t177.{self::Class::field} = #t178 in #t178;
  c = let final self::Class* #t180 = c in #t180.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t181 = #t180.{self::Class::field}.{self::Class::+}(1) in let final void #t182 = #t180.{self::Class::field} = #t181 in #t181;
}
static method ifNull(self::Class* c) → void {
  let final self::Class* #t183 = c in #t183.{core::Object::==}(null) ?{self::Class*} null : #t183.{self::Class::field}.{core::Object::==}(null) ?{self::Class*} #t183.{self::Class::field} = c : null;
  c = let final self::Class* #t184 = c in #t184.{core::Object::==}(null) ?{self::Class*} null : let final self::Class* #t185 = #t184.{self::Class::field} in #t185.{core::Object::==}(null) ?{self::Class*} #t184.{self::Class::field} = c : #t185;
  self::throws(() → self::Class* => let final self::Class* #t186 = let final self::Class* #t187 = c in #t187.{core::Object::==}(null) ?{self::Class*} null : #t187.{self::Class::field} in let final self::Class* #t188 = #t186.{self::Class::field} in #t188.{core::Object::==}(null) ?{self::Class*} #t186.{self::Class::field} = c : #t188);
  self::throws(() → self::Class* => c = let final self::Class* #t189 = let final self::Class* #t190 = c in #t190.{core::Object::==}(null) ?{self::Class*} null : #t190.{self::Class::field} in let final self::Class* #t191 = #t189.{self::Class::field} in #t191.{core::Object::==}(null) ?{self::Class*} #t189.{self::Class::field} = c : #t191);
  self::throws(() → self::Class* => let final self::Class* #t192 = let final self::Class* #t193 = c in #t193.{core::Object::==}(null) ?{self::Class*} null : #t193.{self::Class::field} in let final self::Class* #t194 = c in let final self::Class* #t195 = #t192.{self::Class::[]}(#t194) in #t195.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t196 = c in let final void #t197 = #t192.{self::Class::[]=}(#t194, #t196) in #t196 : #t195);
  self::throws(() → self::Class* => c = let final self::Class* #t198 = let final self::Class* #t199 = c in #t199.{core::Object::==}(null) ?{self::Class*} null : #t199.{self::Class::field} in let final self::Class* #t200 = c in let final self::Class* #t201 = #t198.{self::Class::[]}(#t200) in #t201.{core::Object::==}(null) ?{self::Class*} let final self::Class* #t202 = c in let final void #t203 = #t198.{self::Class::[]=}(#t200, #t202) in #t202 : #t201);
}
static method throws(() →* void f) → void {
  try {
    f.call();
  }
  on dynamic catch(final dynamic _) {
    return;
  }
  throw "Expected exception.";
}
