library /*isNonNullableByDefault*/;
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}{core::int?} in #t1 == null ?{core::int} this.{self::Sub::_hashCode} = super.{self::Base::hashCode} : #t1{core::int};
  method foo() → dynamic {
    this.{self::Sub::_hashCode}{core::int?} == 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::int});
  core::List<core::String?> l = core::_GrowableList::_literal1<core::String?>(null);
  let final core::List<core::String?> #t2 = l in let final core::int #t3 = 0 in #t2.{core::List::[]}(#t3){(core::int) → core::String?} == null ?{core::String} #t2.{core::List::[]=}(#t3, "fisk"){(core::int, core::String?) → void} : null;
}


Extra constant evaluation status:
Evaluated: VariableGet @ org-dartlang-testcase:///issue_000081.dart:22:5 -> IntConstant(0)
Evaluated: VariableGet @ org-dartlang-testcase:///issue_000081.dart:22:5 -> IntConstant(0)
Extra constant evaluation: evaluated: 32, effectively constant: 2
