ConcurrentModificationException when attempting to removeAll on a list (not iterating) : <p>Some weird behaviour here as I'm not iterating through the list.</p>

<pre><code>public boolean deleteEvents(ArrayList&lt;EventsModel&gt; list) {
    boolean success = false;
    synchronized (lock) {
        ArrayList&lt;EventsModel&gt; listClone = (ArrayList&lt;EventsModel&gt;) list.clone();
        success = processDelete(listClone);
    }
    return success;
}

private boolean processDelete(List&lt;EventsModel&gt; list) {
    boolean success = false;
    if (list.size() &gt; 999) {
        List&lt;EventsModel&gt; subList = list.subList(0, 998);
        list.removeAll(subList); // blows up with ConcurrentModificationException
        // 
    } else {
        //
    }
    return success;
}
</code></pre>

<p>Am I not using <code>removeAll</code> correctly? </p>
