An introduction to MediatorLiveData and Transformations to build reactive patterns with LiveData.
How to make use of recursion in Kotlin.