public ListIterator<E> listIterator(final int index) {
            return new ListIterator<E>() {
                ListIterator it = myvalues.listIterator(index);

                public boolean hasNext() {
                    return it.hasNext();
                }

                public E next() {
                    return (E) createFieldValue(it.next());
                }

                public boolean hasPrevious() {
                    return it.hasPrevious();
                }

                public E previous() {
                    return (E) createFieldValue(it.previous());
                }

                public int nextIndex() {
                    return it.nextIndex();
                }

                public int previousIndex() {
                    return it.previousIndex();
                }

                public void remove() {
                    it.remove();
                }

                public void set(E o) {
                    it.set(unwrap(o));
                }

                public void add(E o) {
                    it.add(unwrap(o));
                }
            };
        }
This wrapper class is used to wrap a list that isn't a list of field
values. This is done, as to not alter behaviour from previous state,
where people could add whatever list to a document, and then keep adding
stuff to the list afterwards.

<p>
TODO: Remove this class and only allow instance of Array to be added.
document/src/main/java/com/yahoo/document/datatypes/Array.java