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

class A extends core::Object {
  synthetic constructor •() → self::A
    ;
  get call() → core::String
    ;
}
class B extends core::Object {
  synthetic constructor •() → self::B
    ;
  get call() → () → core::String
    ;
}
extension _extension#0 on core::int {
  get call = self::_extension#0|get#call;
}
extension _extension#1 on core::num {
  get call = self::_extension#1|get#call;
}
extension _extension#2 on core::String {
  get call = self::_extension#2|get#call;
}
static field core::String topLevel1;
static field core::String topLevel2;
static field core::String topLevel3;
static field core::String topLevel4;
static field self::A a;
static field invalid-type topLevel5;
static field self::B b;
static field invalid-type topLevel6;
static method _extension#0|get#call(lowered final core::int #this) → core::String
  ;
static method _extension#1|get#call(lowered final core::num #this) → core::String
  ;
static method _extension#2|get#call(lowered final core::String #this) → () → core::String
  ;
static method main() → dynamic
  ;
static method errors() → dynamic
  ;
