The attached pictures show a visual representation of the BASE Reactor model.
Some thoughts to consider:
The AssemblyType (and RodType) here is mentioned as a Class, instead of an enumeration. This is important because a Class is extensible for multiple different types of Assemblies. Enumerations are not. Granted, this means that for each type of extended Reactor, this class needs to be written and set within the Constructor. I added a "getAssemblyTypes" operation to the Reactor in order to return the AssemblyType. Also, hashCode should always return the same number for the same type, but should differ between assembly types. The hashCode convention should be upto the developer. This applies to RodType as well.
The Map pieces for Reactor and Assembly for storing XType should be a HashMap.
Could Rod be a LWRComposite? -> Upto the developer.
A developer should understand the reason for the TreeSet + Comparable interface here before implementing. This is a powerful tool designed to keep the lists in a specific order.
Added Zip format for those who dont like rars.