More comments, more efficent implementation when modifications don't occur for removeAll and retainAll....and more unit tests!