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

class Class1 extends core::Object {
  synthetic constructor •() → self::Class1
    ;
}
extension Extension1 on self::Class1 {
  static method staticMethod = self::Extension1|staticMethod;
  static get staticProperty = get self::Extension1|staticProperty;
  static field staticField = self::Extension1|staticField;
  static set staticProperty = set self::Extension1|staticProperty;
}
static field core::int Extension1|staticField;
static method Extension1|staticMethod() → dynamic
  ;
static get Extension1|staticProperty() → core::int
  ;
static set Extension1|staticProperty(core::int value) → void
  ;
static method main() → dynamic
  ;
