Bug 315281 update copyrights for 3.6
bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/list/ListDiff.java
* @return an unmodifiable list showing what <code>list</code> would look
	 *         like if it were passed to the {@link #applyTo(List)} method.
	 * @see #applyTo(List)
	 * @since 1.3
	 */
	public List simulateOn(List list) {
		final List[] result = { list };
		accept(new ListDiffVisitor() {
			public void handleAdd(int index, Object element) {
				List first = result[0].subList(0, index);
				List middle = Collections.singletonList(element);
				List last = result[0].subList(index, result[0].size());
				result[0] = ConcatList.cat(first, middle, last);
			}
			public void handleRemove(int index, Object element) {
				List first = result[0].subList(0, index);
				List last = result[0].subList(index + 1, result[0].size());
				result[0] = ConcatList.cat(first, last);
			}
			public void handleReplace(int index, Object oldElement,
					Object newElement) {
				List first = result[0].subList(0, index);
				List middle = Collections.singletonList(newElement);
				List last = result[0].subList(index + 1, result[0].size());
				result[0] = ConcatList.cat(first, middle, last);
			}
		});
		return result[0];
	}
	private static class ConcatList extends AbstractList {