public void replaceAll(int index, int len, Collection<? extends E> coll) {
    	if (coll instanceof IList) {
    		replaceAll(index, len, (IList<? extends E>) coll);
    	} else if (coll instanceof List) {
    		replaceAll(index, len, new IReadOnlyListFromList<E>((List<? extends E>) coll));
    	} else {
    		replaceAll(index, len, new IReadOnlyListFromCollection<E>(coll));
    	}
    }
Replaces the specified range with new elements.
This method is very powerful as it offers the functionality of many other methods
which are therefore only offered for convenience: <br/>
- addAll(index, list) -> replaceAll(index, 0, list) <br/>
- setAll(index, list) -> replaceAll(index, list.size(), list) <br/>
- putAll(index, list) -> replaceAll(index, -1, list) <br/>
- initAll(list)       -> replaceAll(0, this.size(), list) <br/>
- remove(index, list) -> replaceAll(index, list.size(), null) <br/>

@param index index of first element to replace, use -1 for the position after the last element (this.size())
@param len	number of elements to replace, use -1 for getting behavior of putAll()
@param coll  collection with elements which replace the old elements, use null if elements should only be removed
@throws 		IndexOutOfBoundsException if the range is invalid
jphp-runtime/src/php/runtime/memory/support/IList.java