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

abstract class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  external get _f1() → core::int?;
}
extension /* unnamed */ _extension#0 on self::C {
  get _f2 = self::_extension#0|get#_f2;
}
external static extension-member method _extension#0|get#_f2(lowered self::C #this) → core::int?;
static method testExternalFieldInClass(self::C c) → void {
  if(!(c.{self::C::_f1}{core::int?} == null)) {
    core::int? x = c.{self::C::_f1}{core::int?};
    x = null;
  }
}
static method testExternalFieldInExtension(self::C c) → void {
  if(!(self::_extension#0|get#_f2(c) == null)) {
    core::int? x = self::_extension#0|get#_f2(c);
    x = null;
  }
}
static method main() → dynamic {}
