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

extension E1 on core::int show-types core::num {
  method ceil = self::E1|ceil;
  tearoff ceil = self::E1|get#ceil;
}
extension E2 on core::int show-types core::num hide-methods core::int::ceil hide-getters core::int::ceil {
  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 hide-getters core::int::isEven {
  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
  ;
