I do not think unmodifiableset should have a no-arg ctor, so instead i pushed this up to emptychararrayset
ok I'm fine with that.
i do not think emptychararrayset need override and throw uoe for removeAll or retainAll, and i don't think the tests were correct in assuming it will throw uoe. it will not throw uoe for say, removeAll only because it is empty. it will just do nothing.
You are right, this should only throw this exception if the set contains it and the Iterator does not implement remove()
* Note that this implementation throws an
* <tt>UnsupportedOperationException</tt> if the iterator returned by this
* collection's iterator method does not implement the <tt>remove</tt>
* method and this collection contains the specified object.
same is true for AbstractSet#removeAll() & retainAll()
Thanks for updating it. I think this is good to go though!