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

class Base extends core::Object {
  field core::int hashCode = 42;
  synthetic constructor •() → void
    : super core::Object::•()
    ;
}
class Sub extends self::Base {
  field core::int _hashCode = null;
  synthetic constructor •() → void
    : super self::Base::•()
    ;
  get hashCode() → dynamic
    return let final dynamic #t1 = this._hashCode in #t1.==(null) ? this._hashCode = super.{self::Base::hashCode} : #t1;
  method foo() → dynamic {
    this._hashCode.==(null) ? this._hashCode = super.{self::Base::hashCode} : null;
  }
}
static method main() → dynamic {
  core::print(new self::Sub::•().hashCode);
  dynamic l = <dynamic>[null];
  let final dynamic #t2 = l in let final dynamic #t3 = 0 in #t2.[](#t3).==(null) ? #t2.[]=(#t3, "fisk") : null;
}
