library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;

class C extends core::Object {
  field core::num pi = 3.14;
  field core::num? _#C#p1 = null;
  field core::num? _#C#p2 = null;
  field core::bool _#C#p2#isSet = false;
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  get p1() → core::num
    return let final core::num? #t1 = this.{self::C::_#C#p1} in #t1.==(null) ?{core::num} this.{self::C::_#C#p1} = this.{self::C::pi} : #t1{core::num};
  set p1(core::num #t2) → void
    this.{self::C::_#C#p1} = #t2;
  get p2() → core::num
    return let final core::num? #t3 = this.{self::C::_#C#p2} in #t3.==(null) ?{core::num} let final core::num #t4 = this.{self::C::pi} in this.{self::C::_#C#p2}.==(null) ?{core::num} this.{self::C::_#C#p2} = #t4 : throw new _in::LateInitializationErrorImpl::•("Field 'p2' has been assigned during initialization.") : #t3{core::num};
}
static method main() → dynamic {
  self::expect(3.14, new self::C::•().{self::C::p1});
  self::expect(3.14, new self::C::•().{self::C::p2});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!expected.{core::Object::==}(actual))
    throw "Expected ${expected}, actual ${actual}";
}
