The special-purpose collections, such as those returned by Collections.empty*, singleton*, nCopies, etc., are not consistent in the way they handle calls to mutator methods.
Unlike the unmodifiable wrappers (JDK-8165385) and the immutable collections produced by the convenience factories (JDK-8159404), these specialized collections often will not throw UnsupportedOperationException if a mutator is called in such a way as to be a no-op. For example,
Collections.emptyList().addAll(Collections.emptyList())
will return normally and not throw any exception. This is in contrast to unmodifiable wrappers, where
Collections.unmodifiableList(Collections.emptyList()).addAll(Collections.emptyList())
**will** throw UOE.
The behavior of the different specialized collections is not uniform. There are many cases where no exceptions are thrown when no-op mutators are called, but they aren't wholly consistent.
The questions are whether these various specialized lists should be brought into consistency with the unmodifiable wrappers and the immutable collections, and whether their specifications should require this behavior.