When a getter returns a property, such as returning a List of other related objects, should that list and it\'s objects be immutable to prevent code outside of
List
I think you'll find that it's very rare for every gettable to be immutable.
What you could do is to fire events when a property is changed within such objects. Not a perfect solution either.
Documentation is probably the most pragmatic solution ;)