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

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