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

class A1 extends core::Object {
  field core::Object? field = null;
  synthetic constructor •() → self::A1
    : super core::Object::•()
    ;
  method method1() → void {}
}
extension A2 on self::A1 {
  method method2 = self::A2|method2;
  tearoff method2 = self::A2|get#method2;
  method method3 = self::A2|method3;
  tearoff method3 = self::A2|get#method3;
  method method4 = self::A2|method4;
  tearoff method4 = self::A2|get#method4;
}
static method A2|method2(lowered final self::A1 #this) → void
  return #this.{self::A1::method1}(){() → void};
static method A2|get#method2(lowered final self::A1 #this) → () → void
  return () → void => self::A2|method2(#this);
static method A2|method3(lowered final self::A1 #this) → core::Object?
  return #this.{self::A1::field}{core::Object?};
static method A2|get#method3(lowered final self::A1 #this) → () → core::Object?
  return () → core::Object? => self::A2|method3(#this);
static method A2|method4(lowered final self::A1 #this, core::Object o) → void {
  #this.{self::A1::field} = o;
}
static method A2|get#method4(lowered final self::A1 #this) → (core::Object) → void
  return (core::Object o) → void => self::A2|method4(#this, o);
static method main() → dynamic {}
