By using the Immutable<T>.change method, you can update the state with a modified version of
the current one. However, there are often cases where you need read-only access only, and writing
data is unnecessary. For such a case, call ImmutableView<T>.readOnly:

Redux is nice, in part because of its combineReducers functionality, which allows
you to split application logic into smaller units. In Dart, this doesn't map so well,
as objects need to have specific type, and the language has no concept of a
spread operator.

For this, the Immutable<T> class has a method property that produces a child immutable
that points to a property of the main state. This child state can also process updates, thereby
triggering a change in the parent. Through the use of Immutable<T>.property, you can build
infinitely-nested trees of immutable application state.

Because of how often this is used, the ImmutablePropertyManager<T> class exists: