public Object[] toArray() {
   activateForRead();
   return _delegate.toArray();
 }
 public boolean retainAll(Collection<?> c) {
   activateForWrite();
   return _delegate.retainAll(c);
 }
 public int size() {
   activateForRead();
   return _delegate.size();
 }
 public Iterator<E> iterator() {
   activateForRead();
   return new ActivatingIterator<E>(_activatable, _delegate.iterator());
 }
 public boolean remove(Object o) {
   activateForWrite();
   return _delegate.remove(o);
 }
 public boolean containsAll(Collection<?> c) {
   activateForRead();
   return _delegate.containsAll(c);
 }
 public boolean isEmpty() {
   activateForRead();
   return _delegate.isEmpty();
 }
 public boolean contains(Object o) {
   activateForRead();
   return _delegate.contains(o);
 }
 public void clear() {
   activateForWrite();
   _delegate.clear();
 }
 public boolean addAll(Collection<? extends E> c) {
   activateForWrite();
   return _delegate.addAll(c);
 }
 public boolean add(E e) {
   activateForWrite();
   return _delegate.add(e);
 }
 public <T> T[] toArray(T[] a) {
   activateForRead();
   return _delegate.toArray(a);
 }