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

class A extends core::Object {
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
}
extension type on self::A {
  method method = self::type|method;
  tearoff method = self::type|get#method;
}
static method type|method(lowered final self::A #this) → dynamic {}
static method type|get#method(lowered final self::A #this) → () → dynamic
  return () → dynamic => self::type|method(#this);
static method test() → dynamic {
  self::type|method(new self::A::•());
}
static method main() → dynamic {}
