|  | // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | part of html; | 
|  |  | 
|  | // Iterator for arrays with fixed size. | 
|  | class FixedSizeListIterator<T> implements Iterator<T> { | 
|  | final List<T> _array; | 
|  | final int _length; // Cache array length for faster access. | 
|  | int _position; | 
|  | T? _current; | 
|  |  | 
|  | FixedSizeListIterator(List<T> array) | 
|  | : _array = array, | 
|  | _position = -1, | 
|  | _length = array.length; | 
|  |  | 
|  | bool moveNext() { | 
|  | int nextPosition = _position + 1; | 
|  | if (nextPosition < _length) { | 
|  | _current = _array[nextPosition]; | 
|  | _position = nextPosition; | 
|  | return true; | 
|  | } | 
|  | _current = null; | 
|  | _position = _length; | 
|  | return false; | 
|  | } | 
|  |  | 
|  | T get current => _current as T; | 
|  | } | 
|  |  | 
|  | // Iterator for arrays with variable size. | 
|  | class _VariableSizeListIterator<T> implements Iterator<T> { | 
|  | final List<T> _array; | 
|  | int _position; | 
|  | T? _current; | 
|  |  | 
|  | _VariableSizeListIterator(List<T> array) | 
|  | : _array = array, | 
|  | _position = -1; | 
|  |  | 
|  | bool moveNext() { | 
|  | int nextPosition = _position + 1; | 
|  | if (nextPosition < _array.length) { | 
|  | _current = _array[nextPosition]; | 
|  | _position = nextPosition; | 
|  | return true; | 
|  | } | 
|  | _current = null; | 
|  | _position = _array.length; | 
|  | return false; | 
|  | } | 
|  |  | 
|  | T get current => _current as T; | 
|  | } |