@Override public int indexOf(Object o) { read(); return values.indexOf( o ); }
@Override public int lastIndexOf(Object o) { read(); return values.lastIndexOf( o ); }
@Override public Object[] toArray(Object[] a) { read(); return values.toArray( a ); }
@Override public boolean contains(Object o) { read(); return values.contains( o ); }
@Override public boolean containsAll(Collection c) { read(); return values.containsAll( c ); }
@Override public Object[] toArray() { read(); return values.toArray(); }
@Override public Object get(int index) { read(); return values.get( index ); }
@Override public List subList(int fromIndex, int toIndex) { read(); return new ListProxy( values.subList( fromIndex, toIndex ) ); }
@Override public Iterator iterator() { read(); return new IteratorProxy( values.iterator() ); }
@Override public ListIterator listIterator() { read(); return new ListIteratorProxy( values.listIterator() ); }
@Override public ListIterator listIterator(int index) { read(); return new ListIteratorProxy( values.listIterator( index ) ); }
@Override public E get(int index) { read(); return values.get( index ); }
@Override public int indexOf(Object o) { read(); return values.indexOf( o ); }
@Override public Object[] toArray(Object[] a) { read(); return values.toArray( a ); }
public Object[] toArray(Object[] a) { read(); return values.toArray(a); }
@Override public boolean containsAll(Collection c) { read(); return values.containsAll( c ); }
@Override public Object[] toArray() { read(); return values.toArray(); }
@Override public List<E> subList(int fromIndex, int toIndex) { read(); return new ListProxy( values.subList( fromIndex, toIndex ) ); }
@Override public ListIterator listIterator() { read(); return new ListIteratorProxy( values.listIterator() ); }
@Override public Iterator iterator() { read(); return new IteratorProxy( values.iterator() ); }