https://twitter.github.io/scala_school/ru/advanced-types.html