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::bool _#C#p1#isSet = false;
  field core::num? _#C#p2 = null;
  field core::bool _#C#p2#isSet = false;
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  get p1() → core::num {
    if(!this.{self::C::_#C#p1#isSet}) {
      this.{self::C::_#C#p1} = this.{self::C::pi};
      this.{self::C::_#C#p1#isSet} = true;
    }
    return let final core::num? #t1 = this.{self::C::_#C#p1} in #t1{core::num};
  }
  set p1(core::num #t2) → void {
    this.{self::C::_#C#p1#isSet} = true;
    this.{self::C::_#C#p1} = #t2;
  }
  get p2() → core::num {
    if(!this.{self::C::_#C#p2#isSet}) {
      final core::num #t3 = this.{self::C::pi};
      if(this.{self::C::_#C#p2#isSet})
        throw new _in::LateInitializationErrorImpl::•("Field 'p2' has been assigned during initialization.");
      this.{self::C::_#C#p2} = #t3;
      this.{self::C::_#C#p2#isSet} = true;
    }
    return let final core::num? #t4 = this.{self::C::_#C#p2} in #t4{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}";
}
