goog.module('foreachstatement.ForEachStatement$impl');

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

let Exception1 = goog.forwardDeclare('foreachstatement.ForEachStatement.Exception1$impl');
let Exception2 = goog.forwardDeclare('foreachstatement.ForEachStatement.Exception2$impl');
let Exception3 = goog.forwardDeclare('foreachstatement.ForEachStatement.Exception3$impl');
let Exception4 = goog.forwardDeclare('foreachstatement.ForEachStatement.Exception4$impl');
let IterableReturningTypeVariable = goog.forwardDeclare('foreachstatement.ForEachStatement.IterableReturningTypeVariable$impl');
let StringIterable = goog.forwardDeclare('foreachstatement.ForEachStatement.StringIterable$impl');
let Character = goog.forwardDeclare('java.lang.Character$impl');
let Exception = goog.forwardDeclare('java.lang.Exception$impl');
let Integer = goog.forwardDeclare('java.lang.Integer$impl');
let Iterable = goog.forwardDeclare('java.lang.Iterable$impl');
let Number = goog.forwardDeclare('java.lang.Number$impl');
let j_l_String = goog.forwardDeclare('java.lang.String$impl');
let Throwable = goog.forwardDeclare('java.lang.Throwable$impl');
let Iterator = goog.forwardDeclare('java.util.Iterator$impl');
let $Arrays = goog.forwardDeclare('vmbootstrap.Arrays$impl');
let $Casts = goog.forwardDeclare('vmbootstrap.Casts$impl');
let $Exceptions = goog.forwardDeclare('vmbootstrap.Exceptions$impl');
let $Primitives = goog.forwardDeclare('vmbootstrap.Primitives$impl');

class ForEachStatement extends j_l_Object {
 /** @protected @nodts */
 constructor() {
  super();
 }
 /** @nodts @return {!ForEachStatement} */
 static $create__() {
  ForEachStatement.$clinit();
  let $instance = new ForEachStatement();
  $instance.$ctor__foreachstatement_ForEachStatement__void();
  return $instance;
 }
 /** @nodts */
 $ctor__foreachstatement_ForEachStatement__void() {
  this.$ctor__java_lang_Object__void();
 }
 /** @nodts */
 m_test__java_lang_Iterable__void(/** Iterable<Throwable> */ iterable) {
  for (let $iterator = iterable.m_iterator__java_util_Iterator(); $iterator.m_hasNext__boolean(); ) {
   let t = /**@type {Throwable}*/ ($Casts.$to($iterator.m_next__java_lang_Object(), Throwable));
   {
    t.toString();
   }
  }
  for (let $array = /**@type {!Array<Throwable>}*/ ($Arrays.$create([10], Throwable)), $index = 0; $index < $array.length; $index++) {
   let t_1 = $array[$index];
   {
    t_1.toString();
   }
  }
 }
 /** @nodts */
 m_testMulticatch__void_$p_foreachstatement_ForEachStatement() {
  try {
   throw $Exceptions.toJs(Exception.$create__());
  } catch (__$jsexc) {
   let __$exc = $Exceptions.toJava(__$jsexc);
   if (Exception1.$isInstance(__$exc) || Exception2.$isInstance(__$exc)) {
    let e = /**@type {(Exception1|Exception2)}*/ (__$exc);
    for (let $iterator = (/**@type {Iterable<(Number|number)>}*/ ($Casts.$to(e, /**@type {Function}*/ (Iterable)))).m_iterator__java_util_Iterator(); $iterator.m_hasNext__boolean(); ) {
     let o = /**@type {(Number|number)}*/ ($Casts.$to($iterator.m_next__java_lang_Object(), Number));
    }
   } else if (Exception3.$isInstance(__$exc) || Exception4.$isInstance(__$exc)) {
    let e_1 = /**@type {(Exception3|Exception4)}*/ (__$exc);
    for (let $iterator_1 = (/**@type {Iterable<*>}*/ ($Casts.$to(e_1, /**@type {Function}*/ (Iterable)))).m_iterator__java_util_Iterator(); $iterator_1.m_hasNext__boolean(); ) {
     let o_1 = $iterator_1.m_next__java_lang_Object();
    }
   } else {
    throw $Exceptions.toJs(__$exc);
   }
  }
  try {
   throw $Exceptions.toJs(Exception.$create__());
  } catch (__$jsexc_1) {
   let __$exc_1 = $Exceptions.toJava(__$jsexc_1);
   if (Exception2.$isInstance(__$exc_1) || Exception3.$isInstance(__$exc_1)) {
    let e_2 = /**@type {(Exception2|Exception3)}*/ (__$exc_1);
    for (let $iterator_2 = (/**@type {Iterable<Integer>}*/ ($Casts.$to(e_2, /**@type {Function}*/ (Iterable)))).m_iterator__java_util_Iterator(); $iterator_2.m_hasNext__boolean(); ) {
     let o_2 = $Primitives.widenIntToLong((/**@type {Integer}*/ ($Casts.$to($iterator_2.m_next__java_lang_Object(), Integer))).m_intValue__int());
    }
   } else {
    throw $Exceptions.toJs(__$exc_1);
   }
  }
 }
 /** @nodts @template T, U, V */
 m_testTypeVariable__void_$p_foreachstatement_ForEachStatement() {
  let /** ?U */ iterable = null;
  for (let $iterator = (/**@type {!Iterable<?string>}*/ ($Casts.$to(iterable, /**@type {Function}*/ (Iterable)))).m_iterator__java_util_Iterator(); $iterator.m_hasNext__boolean(); ) {
   let s = /**@type {?string}*/ ($Casts.$to($iterator.m_next__java_lang_Object(), j_l_String));
  }
  let /** IterableReturningTypeVariable<?, ?> */ anotherIterable = null;
  for (let $iterator_1 = anotherIterable.m_iterator__java_util_Iterator(); (/**@type {!Iterator<Integer>}*/ ($iterator_1)).m_hasNext__boolean(); ) {
   let s_1 = (/**@type {Integer}*/ ($Casts.$to((/**@type {!Iterator<Integer>}*/ ($iterator_1)).m_next__java_lang_Object(), Integer))).m_intValue__int();
  }
  let /** ?V */ integerIterable = null;
  for (let $iterator_2 = (/**@type {!Iterable<Integer>}*/ ($Casts.$to(integerIterable, /**@type {Function}*/ (Iterable)))).m_iterator__java_util_Iterator(); $iterator_2.m_hasNext__boolean(); ) {
   let i = (/**@type {Integer}*/ ($Casts.$to($iterator_2.m_next__java_lang_Object(), Integer))).m_intValue__int();
  }
  for (let $iterator_3 = (/**@type {!Iterable<Integer>}*/ ($Casts.$to(integerIterable, /**@type {Function}*/ (Iterable)))).m_iterator__java_util_Iterator(); $iterator_3.m_hasNext__boolean(); ) {
   let i_1 = $Primitives.widenIntToLong((/**@type {Integer}*/ ($Casts.$to($iterator_3.m_next__java_lang_Object(), Integer))).m_intValue__int());
  }
  let /** Iterable<Character> */ charIterable = null;
  for (let $iterator_4 = charIterable.m_iterator__java_util_Iterator(); $iterator_4.m_hasNext__boolean(); ) {
   let c = (/**@type {Character}*/ ($Casts.$to($iterator_4.m_next__java_lang_Object(), Character))).m_charValue__char();
  }
 }
 /** @nodts */
 m_testSideEffects__void_$p_foreachstatement_ForEachStatement() {
  let /** Iterable<Integer> */ iterable = null;
  let /** Array<number> */ primitiveArray = null;
  for (let $iterator = iterable.m_iterator__java_util_Iterator(); $iterator.m_hasNext__boolean(); ) {
   let i = /**@type {Integer}*/ ($Casts.$to($iterator.m_next__java_lang_Object(), Integer));
   {
    i = Integer.m_valueOf__int__java_lang_Integer(4);
   }
  }
  for (let $iterator_1 = iterable.m_iterator__java_util_Iterator(); $iterator_1.m_hasNext__boolean(); ) {
   let i_1 = (/**@type {Integer}*/ ($Casts.$to($iterator_1.m_next__java_lang_Object(), Integer))).m_intValue__int();
   {
    i_1 = i_1 + 4 | 0;
   }
  }
  for (let $array = primitiveArray, $index = 0; $index < $array.length; $index++) {
   let i_2 = $array[$index];
   {
    i_2 = i_2 + 4 | 0;
   }
  }
  for (let $array_1 = primitiveArray, $index_1 = 0; $index_1 < $array_1.length; $index_1++) {
   let i_3 = $array_1[$index_1];
   {
    i_3 = i_3 + 1 | 0;
   }
  }
 }
 /** @nodts */
 m_testOverriddenIterator__foreachstatement_ForEachStatement_StringIterable__void_$p_foreachstatement_ForEachStatement(/** StringIterable */ i) {
  for (let $iterator = i.m_iterator__foreachstatement_ForEachStatement_StringIterator(); $iterator.m_hasNext__boolean(); ) {
   let s = /**@type {?string}*/ ($Casts.$to($iterator.m_next__java_lang_Object(), j_l_String));
  }
 }
 /** @nodts */
 static $clinit() {
  ForEachStatement.$clinit = () =>{};
  ForEachStatement.$loadModules();
  j_l_Object.$clinit();
 }
 /** @nodts @return {boolean} */
 static $isInstance(/** ? */ instance) {
  return instance instanceof ForEachStatement;
 }
 
 /** @nodts */
 static $loadModules() {
  Exception1 = goog.module.get('foreachstatement.ForEachStatement.Exception1$impl');
  Exception2 = goog.module.get('foreachstatement.ForEachStatement.Exception2$impl');
  Exception3 = goog.module.get('foreachstatement.ForEachStatement.Exception3$impl');
  Exception4 = goog.module.get('foreachstatement.ForEachStatement.Exception4$impl');
  Character = goog.module.get('java.lang.Character$impl');
  Exception = goog.module.get('java.lang.Exception$impl');
  Integer = goog.module.get('java.lang.Integer$impl');
  Iterable = goog.module.get('java.lang.Iterable$impl');
  Number = goog.module.get('java.lang.Number$impl');
  j_l_String = goog.module.get('java.lang.String$impl');
  Throwable = goog.module.get('java.lang.Throwable$impl');
  $Arrays = goog.module.get('vmbootstrap.Arrays$impl');
  $Casts = goog.module.get('vmbootstrap.Casts$impl');
  $Exceptions = goog.module.get('vmbootstrap.Exceptions$impl');
  $Primitives = goog.module.get('vmbootstrap.Primitives$impl');
 }
}
$Util.$setClassMetadata(ForEachStatement, 'foreachstatement.ForEachStatement');

exports = ForEachStatement;

//# sourceMappingURL=ForEachStatement.js.map
