A translator for handling issues specific to collections. In particular, this handles defensive copying of collections that don't need to be transformed, but also deals with making a copy of a collection that matches the original collection type (set, list, etc.) but where each item in the collection has been translated.
This approach has limitations; it can't change the type of the collection, and it can't currently handle sorted sets with translation (where does the comparator for the translated objects come from?), maps, or allow you to select the implementation class for the collection (LinkedList vs. ArrayList).