Q:

How to make a class containing series of Mutable classes Immutable?

I am aware about the basic rules of how to make object of a class immutable. However, my requirement is something like this. Say I have a class called School. School has mutable class Rooms. Rooms has mutable class Students. Students has mutable class Performance and so on. None of the classes implement Serializable. Now my requirement is to make the class School immutable.Also, if tomorrow School has another Mutable class chain (Say another mutable class Building), I need to retain immutability of School without much code change. 
I know that this requirement can lead to infinite loop, but say after 5 level, we are OK to stop creating new objects to retain immutability. 
Can we use Reflection here? Or is there any other way?

A:

There is no real alternative other than having immutable versions of every class and copying them all the way down.
This will suck.
It's much easier to make all your types immutable from the beginning.

