public boolean moveNext() {
   if (_delegate != null) {
     if (_delegate.moveNext()) {
       return true;
     }
     _delegate = null;
   }
   _currentElement++;
   if (_currentElement >= _array.length) {
     return false;
   }
   Object obj = _array[_currentElement];
   Class clazz = obj.getClass();
   if (clazz.isArray()) {
     if (clazz.getComponentType().isArray()) {
       _delegate = new MultidimensionalArrayIterator(_reflectArray, (Object[]) obj);
     } else {
       _delegate = new ReflectArrayIterator(_reflectArray, obj);
     }
     return moveNext();
   }
   return true;
 }