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

class Base extends core::Object {
  field core::int hashCode = 42;
  default constructor •() → void
    : super core::Object::•()
    ;
}
class Sub extends self::Base {
  field core::int _hashCode = null;
  default 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;
}
