The Java Collections framework defines interfaces such as `java.util.List` or `java.util.Map`.
Several implementation classes are provided for each of those interfaces to fill different needs: some of the implementations guarantee a few given performance characteristics, some others ensure a given behavior, for example immutability.
Among the methods defined by the interfaces of the Collections framework, some are declared as "optional": an implementation class may choose to throw an `UnsupportedOperationException` when one of those methods is called.
For example, `java.util.Collections.emptyList()` returns an implementation of `java.util.List` which is documented as "immutable".
Calling the `add` method on this object triggers an `UnsupportedOperationException`.
* https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/doc-files/coll-overview.html[Collections Framework Overview] in the Java documentation
* https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html[List] in the Java documentation
* https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Set.html[Set] in the Java documentation
* https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Map.html[Map] in the Java documentation