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

class C extends core::Object {
  final field core::int? _x;
  constructor •(core::int? _x) → self::C
    : self::C::_x = _x, super core::Object::•()
    ;
  @#C3
  method manual() → void {
    core::int? x = this.{self::C::_x}{core::int?};
    if(!(x == null))
      core::print(x{core::int});
    else
      core::print("null");
  }
  @#C3
  method pattern() → void {
    {
      final synthesized core::int? #0#0 = this.{self::C::_x}{core::int?};
      {
        hoisted core::int x;
        if(!(#0#0 == null)) {
          x = #0#0{core::int};
          core::print(x);
        }
        else
          core::print("null");
      }
    }
  }
  @#C3
  method promote() → void {
    if(!(this.{self::C::_x}{core::int?} == null))
      core::print(this.{self::C::_x}{core::int?} as{Unchecked} core::int);
    else
      core::print("null");
  }
}

constants  {
  #C1 = "dart2js:never-inline"
  #C2 = null
  #C3 = core::pragma {name:#C1, options:#C2}
}


Constructor coverage from constants:
org-dartlang-testcase:///issue54115.dart:
- pragma._ (from org-dartlang-sdk:///sdk/lib/core/annotations.dart)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
