/** @return a [ErrorStateGenerator] created by merging 2 [ErrorStateGenerator] lambdas */ private fun mergeErrorStateGenerators( first: ErrorStateGenerator, second: ErrorStateGenerator ): ErrorStateGenerator = lambda@ { throwable -> val firstError = first( throwable ) if ( firstError !is ViewState.DefaultError ) return@lambda firstError val secondError = second( throwable ) if ( secondError !is ViewState.DefaultError ) return@lambda secondError default } /** @return [ErrorStateGenerator] from 2 [ErrorStateGenerator] */ operator fun ErrorStateGenerator.plus( other: ErrorStateGenerator ) = mergeErrorStateGenerators( this, other )