Based on your approved domain, create a domain model that has at least 20 classes. You can distribute the classes to different packages according to how you partition your application. Each of the classes should be immutable with no setters and  no public constructor.  Write Test cases that demonstrate the successful creation and updates of your domain objects.