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

class X extends core::Object {
  synthetic constructor •() → self::X
    : super core::Object::•()
    ;
}
[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool kTrue = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object) → core::bool} 1 ?{core::bool} true : false;
[@vm.inferred-type.metadata=dart.core::bool?]static final field core::bool kFalse = [@vm.inferred-type.metadata=dart.core::bool] [@vm.inferred-type.metadata=int?] core::int::parse("1") =={core::num::==}{(core::Object) → core::bool} 2 ?{core::bool} true : false;
static field dynamic usedObject;
[@vm.unboxing-info.metadata=()->i]static get mint() → core::int
  return -6144092014192636707;
[@vm.unboxing-info.metadata=()->i]static get smiOrMint() → core::int
  return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int} 1 : [@vm.inferred-type.metadata=int] self::mint;
static method use(dynamic object) → void {
  self::usedObject == null ?{dynamic} self::usedObject = object : null;
}
static method takePositional(core::int? unboxedSmi, dynamic unboxedInt, dynamic unboxedDouble, dynamic boxedNullableInt, dynamic boxedNullableDouble, dynamic boxedIntOrDouble, dynamic boxedNullableIntOrDouble, dynamic boxedNullableX, dynamic boxedX) → void {
  self::use(unboxedInt);
  self::use(unboxedDouble);
  self::use(boxedNullableInt);
  self::use(boxedNullableDouble);
  self::use(boxedIntOrDouble);
  self::use(boxedNullableIntOrDouble);
  self::use(boxedNullableX);
  self::use(boxedX);
}
static method takeOptional([core::int? unboxedSmi = #C1, dynamic unboxedInt = #C1, dynamic unboxedDouble = #C1, dynamic boxedNullableInt = #C1, dynamic boxedNullableDouble = #C1, dynamic boxedIntOrDouble = #C1, dynamic boxedNullableIntOrDouble = #C1, dynamic boxedNullableX = #C1, dynamic boxedX = #C1]) → void {
  self::use(unboxedInt);
  self::use(unboxedDouble);
  self::use(boxedNullableInt);
  self::use(boxedNullableDouble);
  self::use(boxedIntOrDouble);
  self::use(boxedNullableIntOrDouble);
  self::use(boxedNullableX);
  self::use(boxedX);
}
static method takeNamed({core::int? unboxedSmi = #C1, dynamic unboxedInt = #C1, dynamic unboxedDouble = #C1, dynamic boxedNullableInt = #C1, dynamic boxedNullableDouble = #C1, dynamic boxedIntOrDouble = #C1, dynamic boxedNullableIntOrDouble = #C1, dynamic boxedNullableX = #C1, dynamic boxedX = #C1}) → void {
  self::use(unboxedInt);
  self::use(unboxedDouble);
  self::use(boxedNullableInt);
  self::use(boxedNullableDouble);
  self::use(boxedIntOrDouble);
  self::use(boxedNullableIntOrDouble);
  self::use(boxedNullableX);
  self::use(boxedX);
}
[@vm.unboxing-info.metadata=()->i]static method returnUnboxedSmi() → dynamic
  return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int} 1 : 2;
[@vm.unboxing-info.metadata=()->i]static method returnUnboxedInt() → dynamic
  return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int} [@vm.inferred-type.metadata=int] self::smiOrMint : 2;
[@vm.unboxing-info.metadata=()->d]static method returnUnboxedDouble() → dynamic
  return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double} 1.1 : 2.2;
static method returnBoxedNullableInt() → dynamic
  return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int?} [@vm.inferred-type.metadata=int] self::smiOrMint : null;
static method returnBoxedNullableDouble() → dynamic
  return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double?} 1.1 : null;
static method returnBoxedIntOrDouble() → dynamic
  return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1;
static method returnBoxedNullableIntOrDouble() → dynamic
  return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num?} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null;
static method returnBoxedNullableX() → dynamic
  return [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X?} new self::X::•() : null;
static method returnBoxedX() → dynamic
  return new self::X::•();
static method main() → dynamic {
  self::takePositional([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int} 1 : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int} [@vm.inferred-type.metadata=int] self::smiOrMint : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double} 1.1 : 2.2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int?} [@vm.inferred-type.metadata=int] self::smiOrMint : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double?} 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num?} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X?} new self::X::•() : null, new self::X::•());
  self::takeOptional([@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int} 1 : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int} [@vm.inferred-type.metadata=int] self::smiOrMint : 2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double} 1.1 : 2.2, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int?} [@vm.inferred-type.metadata=int] self::smiOrMint : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double?} 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num?} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null, [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X?} new self::X::•() : null, new self::X::•());
  self::takeNamed(unboxedSmi: [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int} 1 : 2, unboxedInt: [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int} [@vm.inferred-type.metadata=int] self::smiOrMint : 2, unboxedDouble: [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double} 1.1 : 2.2, boxedNullableInt: [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::int?} [@vm.inferred-type.metadata=int] self::smiOrMint : null, boxedNullableDouble: [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::double?} 1.1 : null, boxedIntOrDouble: [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1, boxedNullableIntOrDouble: [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{core::num?} [@vm.inferred-type.metadata=dart.core::bool?] self::kFalse ?{core::num} [@vm.inferred-type.metadata=int] self::smiOrMint : 1.1 : null, boxedNullableX: [@vm.inferred-type.metadata=dart.core::bool?] self::kTrue ?{self::X?} new self::X::•() : null, boxedX: new self::X::•());
  self::use([@vm.inferred-type.metadata=dart.core::_Smi] self::returnUnboxedSmi());
  self::use([@vm.inferred-type.metadata=int] self::returnUnboxedInt());
  self::use([@vm.inferred-type.metadata=dart.core::_Double] self::returnUnboxedDouble());
  self::use([@vm.inferred-type.metadata=int?] self::returnBoxedNullableInt());
  self::use([@vm.inferred-type.metadata=dart.core::_Double?] self::returnBoxedNullableDouble());
  self::use([@vm.inferred-type.metadata=!] self::returnBoxedIntOrDouble());
  self::use(self::returnBoxedNullableIntOrDouble());
  self::use([@vm.inferred-type.metadata=#lib::X?] self::returnBoxedNullableX());
  self::use([@vm.inferred-type.metadata=#lib::X] self::returnBoxedX());
  self::use(#C2);
  self::use(#C3);
  self::use(#C4);
  self::use(#C5);
  self::use(#C6);
  self::use(#C7);
  self::use(#C8);
  self::use(#C9);
  self::use(#C10);
  self::use(#C11);
  self::use(#C12);
  self::use(#C13);
}
constants  {
  #C1 = null
  #C2 = static-tearoff self::takePositional
  #C3 = static-tearoff self::takeOptional
  #C4 = static-tearoff self::takeNamed
  #C5 = static-tearoff self::returnUnboxedSmi
  #C6 = static-tearoff self::returnUnboxedInt
  #C7 = static-tearoff self::returnUnboxedDouble
  #C8 = static-tearoff self::returnBoxedNullableInt
  #C9 = static-tearoff self::returnBoxedNullableDouble
  #C10 = static-tearoff self::returnBoxedIntOrDouble
  #C11 = static-tearoff self::returnBoxedNullableIntOrDouble
  #C12 = static-tearoff self::returnBoxedNullableX
  #C13 = static-tearoff self::returnBoxedX
}
