protected RemoteIterator optimizeIterator(RemoteIterator remote)
throws RemoteException {
Object[] elements = remote.nextObjects();
long size = remote.getSize();
if (size == -1 || (elements != null && size > elements.length)) {
return new BufferIterator(elements, size, remote);
} else {
return new ArrayIterator(elements);
}
}