A collection of Shape objects, analogous to an OGC GeometryCollection. The implementation demands a List (with random access) so that the order can be retained if an application requires it, although logically it's treated as an unordered Set, mostly.
Ideally, {@link #relate(Shape)} should return the same result no matter whatthe shape order is, although the default implementation can be order dependent when the shapes overlap; see {@link #relateContainsShortCircuits()}. To improve performance slightly, the caller could order the shapes by largest first so that relate() will have a greater chance of short-circuit'ing sooner. As the Shape contract states; it may return intersects when the best answer is actually contains or within. If any shape intersects the provided shape then that is the answer.
This implementation is not optimized for a large number of shapes; relate is O(N). A more sophisticated implementation might do an R-Tree based on bbox'es, for example.