Implemented spread operator using Sourcery. See blog post about it.
Example:
case .hideMovieDetail: return MainState( ...state, movieDetail: .hide )
That's quite similar to lenses :)