Can you use public setters for each field? This might better and more easily enforce the generics...create a new instance of the Set/List/Map, then set the value via the setter method (iterate over...