code: public Iterator<E> iterator() {
          Object[] snapshot = elements;
          return new CowIterator<E>(snapshot, 0, snapshot.length);
      }
docs: Returns an {@link Iterator} that iterates over the elements of this list
  as they were at the time of this method call. Changes to the list made
  after this method call will not be reflected by the iterator, nor will
  they trigger a {@link ConcurrentModificationException}.
  
  <p>The returned iterator does not support {@link Iterator#remove()}.