goog.module('arithmeticexpressions.ArithmeticExpressions$impl');

const j_l_Object = goog.require('java.lang.Object$impl');
const $Long = goog.require('nativebootstrap.Long$impl');
const $Util = goog.require('nativebootstrap.Util$impl');

let $1Ref = goog.forwardDeclare('arithmeticexpressions.ArithmeticExpressions.$1Ref$impl');
let Byte = goog.forwardDeclare('java.lang.Byte$impl');
let Character = goog.forwardDeclare('java.lang.Character$impl');
let Double = goog.forwardDeclare('java.lang.Double$impl');
let Integer = goog.forwardDeclare('java.lang.Integer$impl');
let Long = goog.forwardDeclare('java.lang.Long$impl');
let j_l_String = goog.forwardDeclare('java.lang.String$impl');
let $Arrays = goog.forwardDeclare('vmbootstrap.Arrays$impl');
let $Casts = goog.forwardDeclare('vmbootstrap.Casts$impl');
let $LongUtils = goog.forwardDeclare('vmbootstrap.LongUtils$impl');
let $Primitives = goog.forwardDeclare('vmbootstrap.Primitives$impl');

class ArithmeticExpressions extends j_l_Object {
 /** @protected @nodts */
 constructor() {
  super();
  /**@type {!$Long} @nodts*/
  this.f_bar__arithmeticexpressions_ArithmeticExpressions = $Long.fromInt(0);
  /**@type {!$Long} @nodts*/
  this.f_intField__arithmeticexpressions_ArithmeticExpressions = $Long.fromInt(0);
 }
 /** @nodts @return {!ArithmeticExpressions} */
 static $create__() {
  ArithmeticExpressions.$clinit();
  let $instance = new ArithmeticExpressions();
  $instance.$ctor__arithmeticexpressions_ArithmeticExpressions__void();
  return $instance;
 }
 /** @nodts */
 $ctor__arithmeticexpressions_ArithmeticExpressions__void() {
  this.$ctor__java_lang_Object__void();
  this.$init__void_$p_arithmeticexpressions_ArithmeticExpressions();
 }
 /** @nodts */
 m_testCoercions__void() {
  let b = 1;
  let c = 1 /* '\u0001' */;
  let s = 1;
  let i = 1;
  let f = 1;
  let d = 1;
  b = -1;
  c = 65535 /* '\uFFFF' */;
  s = -1;
  i = -1;
  f = 9.223372036854776E18;
  d = 9.223372036854776E18;
  let o = Character.m_valueOf__char__java_lang_Character(c);
  s = $Primitives.narrowCharToShort((/**@type {!Character}*/ ($Casts.$to(o, Character))).m_charValue__char());
 }
 /** @nodts */
 m_testPrimitives__void() {
  let /** number */ $value, /** number */ $value_1;
  let a = 10, b = ($value = a, a = a + 1 | 0, $value), c = ($value_1 = a, a = a - 1 | 0, $value_1), d = a = a + 1 | 0, e = a = a - 1 | 0, f = - a | 0, g = + a, h = ~a, i = 1 + 1 + 2 - 5 | 0, j = Math.imul(1 + 2, 3 + 4), p = $Primitives.coerceDivision(Math.imul($Primitives.coerceDivision(1 / 2), 3) % 4), r = - -2147483648 | 0, t = - (- (- 1 | 0) | 0) | 0, u = + + + 1, v = - + (- 1 | 0) | 0, w = 5 - - 4 | 0;
  let k = !((1 + 2 + 3 | 0) == 4), l = (1 + 2 | 0) != 4, m = $Primitives.widenLongToDouble(Long.f_MAX_VALUE__java_lang_Long) != 9.223372036854778E18;
  let o = $Primitives.coerceDivision((5 + 1 | 0) / 2) - 0;
  a = a << 31;
  a <<= 1;
  a = $Primitives.narrowLongToInt($LongUtils.plus($Primitives.widenIntToLong(a), $Long.fromInt(1)));
  a = $Primitives.narrowLongToInt($LongUtils.divide($Primitives.widenIntToLong(a), $Long.fromInt(1)));
  a = $Primitives.narrowDoubleToInt(a + Double.f_MAX_VALUE__java_lang_Double);
  k = !!(+ k | + true);
  let s = 10;
  k = (s = $Primitives.narrowIntToShort(s + 1 | 0)) == 10;
  let q = 3 >> 2;
  q = 3 >>> 2 | 0;
  let x = $Primitives.narrowIntToByte(Math.imul($Primitives.narrowIntToShort(a) + $Primitives.narrowIntToByte($Primitives.narrowIntToShort(b)), $Primitives.narrowIntToShort($Primitives.narrowIntToByte(c))));
  let y = 121 /* 'y' */;
  let z = Long.m_valueOf__long__java_lang_Long($Long.fromInt(121));
  k = $LongUtils.equals($Primitives.widenCharToLong(y), z.m_longValue__long());
 }
 /** @nodts */
 m_testDoubleAssignments__void() {
  let a = 1;
  a += 2;
  a -= 3;
  a *= 4;
  a /= 5;
  a %= 6;
 }
 /** @nodts */
 m_testCompoundArray__void() {
  let /** Array<number> */ ints = null;
  $Arrays.$set(ints, 0, ints[0] + 1 | 0);
  $Arrays.$set(ints, 0, ints[0] - 1 | 0);
  $Arrays.$set(ints, 0, Math.imul(ints[0], 1));
  $Arrays.$set(ints, 0, $Primitives.coerceDivision(ints[0] / 1));
  ints[0] &= 1;
  ints[0] ^= 1;
  ints[0] |= 1;
  $Arrays.$set(ints, 0, $Primitives.coerceDivision(ints[0] % 1));
  ints[0] <<= 1;
  ints[0] >>= 1;
  $Arrays.$set(ints, 0, ints[0] >>> 1 | 0);
  $Arrays.$set(ints, 0, ints[0] + 1 | 0);
  $Arrays.$set(ints, 0, ints[0] + 1 | 0);
  let i = 0;
  {
   let /** number */ $value;
   let $array = ints, $index = ($value = i, i = i + 1 | 0, $value);
   $Arrays.$set($array, $index, $array[$index] + 1 | 0);
  }
  {
   let $array_1 = ints, $index_1 = i = i + 1 | 0;
   $Arrays.$set($array_1, $index_1, $array_1[$index_1] + 1 | 0);
  }
  {
   let /** number */ $value_1;
   let $array_2 = ints, $index_2 = ($value_1 = i, i = i + 1 | 0, $value_1);
   $Arrays.$set($array_2, $index_2, $Primitives.coerceDivision($array_2[$index_2] / 1));
  }
  let /** Array<!$Long> */ longs = null;
  $Arrays.$set(longs, 0, $LongUtils.plus(longs[0], $Long.fromInt(1)));
  $Arrays.$set(longs, 0, $LongUtils.minus(longs[0], $Long.fromInt(1)));
  $Arrays.$set(longs, 0, $LongUtils.minus(longs[0], $Long.fromInt(1)));
  {
   let $array_3 = ArithmeticExpressions.m_getLongArray__arrayOf_long(), $index_3 = 0;
   $Arrays.$set($array_3, $index_3, $LongUtils.plus($array_3[$index_3], $Long.fromInt(1)));
  }
  let /** Array<boolean> */ booleans = null;
  $Arrays.$set(booleans, 0, !!(+ booleans[0] | + true));
  let /** Array<?string> */ strings = null;
  $Arrays.$set(strings, 0, j_l_String.m_valueOf__java_lang_Object__java_lang_String(strings[0]) + j_l_String.m_valueOf__java_lang_Object__java_lang_String(null));
  let /** Array<number> */ shorts = null;
  let b = $Arrays.$set(shorts, 0, $Primitives.narrowIntToShort(shorts[0] + 1 | 0)) == 10;
 }
 /** @nodts @return {Array<!$Long>} */
 static m_getLongArray__arrayOf_long() {
  return null;
 }
 /** @nodts */
 m_testCompoundBoxedTypes__void() {
  let c = Integer.m_valueOf__int__java_lang_Integer(1000);
  let d = Integer.m_valueOf__int__java_lang_Integer(10000);
  d = Integer.m_valueOf__int__java_lang_Integer(d.m_intValue__int() + c.m_intValue__int() | 0);
  let i = 43;
  d = Integer.m_valueOf__int__java_lang_Integer(d.m_intValue__int() + i | 0);
  d = Integer.m_valueOf__int__java_lang_Integer(d.m_intValue__int() << i);
  i = i + c.m_intValue__int() | 0;
  let e = c = Integer.m_valueOf__int__java_lang_Integer(c.m_intValue__int() + 1 | 0);
  e = c = Integer.m_valueOf__int__java_lang_Integer(c.m_intValue__int() + 1 | 0);
  let e2 = 100;
  e2 = Double.m_doubleValue__java_lang_Double__double(e2) + 1;
  let /** Integer */ $value, /** Integer */ $value_1, /** Integer */ $value_2;
  let f = ($value = c, c = Integer.m_valueOf__int__java_lang_Integer(c.m_intValue__int() + 1 | 0), $value);
  f = ($value_1 = c, c = Integer.m_valueOf__int__java_lang_Integer(c.m_intValue__int() + 1 | 0), $value_1);
  let b = Byte.m_valueOf__byte__java_lang_Byte(0);
  b = Byte.m_valueOf__byte__java_lang_Byte($Primitives.narrowIntToByte(b.m_byteValue__byte() + 1 | 0));
  let ch = Character.m_valueOf__char__java_lang_Character(99 /* 'c' */);
  ch = Character.m_valueOf__char__java_lang_Character($Primitives.narrowIntToChar(ch.m_charValue__char() + 1 /* '\u0001' */ | 0));
  (f = Integer.m_valueOf__int__java_lang_Integer(f.m_intValue__int() + 1 | 0)).m_intValue__int();
  ($value_2 = f, f = Integer.m_valueOf__int__java_lang_Integer(f.m_intValue__int() - 1 | 0), $value_2).m_intValue__int();
  let /** $1Ref<Byte> */ ref = null;
  ref.f_field__arithmeticexpressions_ArithmeticExpressions_1Ref = Byte.m_valueOf__byte__java_lang_Byte($Primitives.narrowIntToByte((/**@type {Byte}*/ ($Casts.$to(ref.f_field__arithmeticexpressions_ArithmeticExpressions_1Ref, Byte))).m_byteValue__byte() + 1 | 0));
  let n = 1 + (/**@type {Byte}*/ ($Casts.$to(ref.f_field__arithmeticexpressions_ArithmeticExpressions_1Ref, Byte))).m_byteValue__byte() | 0;
 }
 /** @nodts @return {Integer} */
 static m_getInteger__java_lang_Integer() {
  return null;
 }
 /** @nodts */
 static m_testSideEffect__void() {
  {
   let $qualifier = ArithmeticExpressions.m_getWithSideEffect__arithmeticexpressions_ArithmeticExpressions();
   $qualifier.f_intField__arithmeticexpressions_ArithmeticExpressions = $LongUtils.plus($qualifier.f_intField__arithmeticexpressions_ArithmeticExpressions, $Long.fromInt(5));
  }
 }
 /** @nodts @return {ArithmeticExpressions} */
 static m_getWithSideEffect__arithmeticexpressions_ArithmeticExpressions() {
  return null;
 }
 /** @nodts */
 m_testExtendedOperands__void() {
  let boxedInteger = Integer.m_valueOf__int__java_lang_Integer(3);
  let /** number */ i;
  let /** !$Long */ l;
  let /** number */ d;
  l = $LongUtils.minus($Primitives.widenIntToLong(2 - boxedInteger.m_intValue__int() | 0), $Long.fromInt(2));
  l = $LongUtils.bitOr($Primitives.widenIntToLong(2 | boxedInteger.m_intValue__int()), $Long.fromInt(2));
  l = $LongUtils.times($LongUtils.times($LongUtils.times($LongUtils.times($Long.fromInt(1000000), l), $Long.fromInt(60)), $Long.fromInt(60)), $Long.fromInt(24));
  l = $LongUtils.times($LongUtils.times($Primitives.widenIntToLong(Math.imul(Math.imul(24, 60), 60)), l), $Long.fromInt(1000000));
  d = $Primitives.widenLongToDouble(l = $Primitives.widenIntToLong(i = 20));
  l = $Primitives.widenIntToLong((boxedInteger = Integer.m_valueOf__int__java_lang_Integer(i = 20)).m_intValue__int());
  l = $LongUtils.plus($LongUtils.plus($Primitives.widenIntToLong(i + boxedInteger.m_intValue__int() | 0), l), $Long.fromInt(20));
  d = $Primitives.widenLongToDouble($LongUtils.plus($Long.fromInt(20), l)) + d;
 }
 /** @nodts */
 m_testEffectivelyFinalVariableInAssignmentExpression__boolean__void(/** boolean */ condition) {
  let /** !$Long */ effectivelyFinal;
  if (condition && $LongUtils.notEquals(effectivelyFinal = this.f_bar__arithmeticexpressions_ArithmeticExpressions, $Long.fromInt(0))) {
   let unused = effectivelyFinal;
  }
 }
 /** @nodts @return {!$Long} */
 static m_incrementCounter__long() {
  return ArithmeticExpressions.f_counter__arithmeticexpressions_ArithmeticExpressions_ = $LongUtils.plus(ArithmeticExpressions.f_counter__arithmeticexpressions_ArithmeticExpressions_, $Long.fromInt(1));
 }
 /** @private @nodts */
 $init__void_$p_arithmeticexpressions_ArithmeticExpressions() {
  let /** !$Long */ $value;
  this.f_bar__arithmeticexpressions_ArithmeticExpressions = ($value = ArithmeticExpressions.$static_foo__arithmeticexpressions_ArithmeticExpressions, ArithmeticExpressions.$static_foo__arithmeticexpressions_ArithmeticExpressions = $LongUtils.plus(ArithmeticExpressions.$static_foo__arithmeticexpressions_ArithmeticExpressions, $Long.fromInt(1)), $value);
 }
 /** @nodts @return {!$Long} */
 static get f_one__arithmeticexpressions_ArithmeticExpressions() {
  return (ArithmeticExpressions.$clinit(), ArithmeticExpressions.$static_one__arithmeticexpressions_ArithmeticExpressions);
 }
 /** @nodts */
 static set f_one__arithmeticexpressions_ArithmeticExpressions(/** !$Long */ value) {
  (ArithmeticExpressions.$clinit(), ArithmeticExpressions.$static_one__arithmeticexpressions_ArithmeticExpressions = value);
 }
 /** @nodts @return {!$Long} */
 static get f_foo__arithmeticexpressions_ArithmeticExpressions() {
  return (ArithmeticExpressions.$clinit(), ArithmeticExpressions.$static_foo__arithmeticexpressions_ArithmeticExpressions);
 }
 /** @nodts */
 static set f_foo__arithmeticexpressions_ArithmeticExpressions(/** !$Long */ value) {
  (ArithmeticExpressions.$clinit(), ArithmeticExpressions.$static_foo__arithmeticexpressions_ArithmeticExpressions = value);
 }
 /** @nodts */
 static $clinit() {
  ArithmeticExpressions.$clinit = () =>{};
  ArithmeticExpressions.$loadModules();
  j_l_Object.$clinit();
  ArithmeticExpressions.$static_one__arithmeticexpressions_ArithmeticExpressions = $Long.fromInt(1);
  let /** !$Long */ $value;
  ArithmeticExpressions.$static_foo__arithmeticexpressions_ArithmeticExpressions = ($value = ArithmeticExpressions.$static_one__arithmeticexpressions_ArithmeticExpressions, ArithmeticExpressions.$static_one__arithmeticexpressions_ArithmeticExpressions = $LongUtils.plus(ArithmeticExpressions.$static_one__arithmeticexpressions_ArithmeticExpressions, $Long.fromInt(1)), $value);
  ArithmeticExpressions.f_counter__arithmeticexpressions_ArithmeticExpressions_ = $Long.fromInt(0);
 }
 /** @nodts @return {boolean} */
 static $isInstance(/** ? */ instance) {
  return instance instanceof ArithmeticExpressions;
 }
 
 /** @nodts */
 static $loadModules() {
  Byte = goog.module.get('java.lang.Byte$impl');
  Character = goog.module.get('java.lang.Character$impl');
  Double = goog.module.get('java.lang.Double$impl');
  Integer = goog.module.get('java.lang.Integer$impl');
  Long = goog.module.get('java.lang.Long$impl');
  j_l_String = goog.module.get('java.lang.String$impl');
  $Arrays = goog.module.get('vmbootstrap.Arrays$impl');
  $Casts = goog.module.get('vmbootstrap.Casts$impl');
  $LongUtils = goog.module.get('vmbootstrap.LongUtils$impl');
  $Primitives = goog.module.get('vmbootstrap.Primitives$impl');
 }
}
/**@const {number} @nodts*/
ArithmeticExpressions.f_FLOAT_CONSTANT__arithmeticexpressions_ArithmeticExpressions_ = 1.100000023841858;
/**@const {number} @nodts*/
ArithmeticExpressions.f_DOUBLE_CONSTANT__arithmeticexpressions_ArithmeticExpressions_ = 1.100000023841858;
/**@const {number} @nodts*/
ArithmeticExpressions.f_DOUBLE_CONSTANT_WITH_ARITHMETIC__arithmeticexpressions_ArithmeticExpressions_ = 2.200000047683716;
/**@private {!$Long} @nodts*/
ArithmeticExpressions.$static_one__arithmeticexpressions_ArithmeticExpressions = $Long.fromInt(0);
/**@private {!$Long} @nodts*/
ArithmeticExpressions.$static_foo__arithmeticexpressions_ArithmeticExpressions = $Long.fromInt(0);
/**@type {!$Long} @nodts*/
ArithmeticExpressions.f_counter__arithmeticexpressions_ArithmeticExpressions_ = $Long.fromInt(0);
$Util.$setClassMetadata(ArithmeticExpressions, 'arithmeticexpressions.ArithmeticExpressions');

exports = ArithmeticExpressions;

//# sourceMappingURL=ArithmeticExpressions.js.map
