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

extension type X(core::int obj) {
  constructor • = self::X|;
  tearoff • = self::X|_#new#tearOff;
  constructor named = self::X|named;
  tearoff named = self::X|_#named#tearOff;
}
static inline-class-member method X|() → self::X /* = core::int */
  ;
static inline-class-member method X|_#new#tearOff() → self::X /* = core::int */
  return self::X|();
static inline-class-member method X|named() → self::X /* = core::int */
  ;
static inline-class-member method X|_#named#tearOff() → self::X /* = core::int */
  return self::X|named();
static method main() → void
  ;
