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

extension Extension on core::int {
  method syncStarMethod = self::Extension|syncStarMethod;
  tearoff syncStarMethod = self::Extension|get#syncStarMethod;
  method asyncMethod = self::Extension|asyncMethod;
  tearoff asyncMethod = self::Extension|get#asyncMethod;
  method asyncStarMethod = self::Extension|asyncStarMethod;
  tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
static method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* 
  ;
static method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
  return () → dynamic => self::Extension|syncStarMethod(#this);
static method Extension|asyncMethod(lowered final core::int #this) → dynamic async 
  ;
static method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
  return () → dynamic => self::Extension|asyncMethod(#this);
static method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* 
  ;
static method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
  return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic
  ;
