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

extension E1 on core::int {
  method ceil = self::E1|ceil;
  tearoff ceil = self::E1|get#ceil;
}
extension E2 on core::int {
  method ceil = self::E2|ceil;
  tearoff ceil = self::E2|get#ceil;
  method floor = self::E2|floor;
  tearoff floor = self::E2|get#floor;
}
extension E3 on core::int {
  get isOdd = self::E3|get#isOdd;
  get isEven = self::E3|get#isEven;
}
static method E1|ceil(lowered final core::int #this) → core::int
  ;
static method E1|get#ceil(lowered final core::int #this) → () → core::int
  return () → core::int => self::E1|ceil(#this);
static method E2|ceil(lowered final core::int #this) → core::int
  ;
static method E2|get#ceil(lowered final core::int #this) → () → core::int
  return () → core::int => self::E2|ceil(#this);
static method E2|floor(lowered final core::int #this) → core::int
  ;
static method E2|get#floor(lowered final core::int #this) → () → core::int
  return () → core::int => self::E2|floor(#this);
static method E3|get#isOdd(lowered final core::int #this) → core::bool
  ;
static method E3|get#isEven(lowered final core::int #this) → core::bool
  ;
static method main() → dynamic
  ;
