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

extension /* unnamed */ _extension#0 on core::Object {
  get q = self::_extension#0|get#q;
}
static extension-member method _extension#0|get#q(lowered final core::Object #this) → core::int
  return 42;
static method main() → void {
  #L1:
  {
    final synthesized dynamic #0#0 = new core::Object::•() as dynamic;
    {
      hoisted core::int x;
      if(#0#0 is core::Object && (let final dynamic #t1 = x = self::_extension#0|get#q(#0#0{core::Object}) in true)) {
        {
          core::print(x);
        }
      }
    }
  }
}
