В языке Kotlin с версии 1.3 появились контракты --- специальный способ описания интересного поведения функций, понятный компилятору.
С их помощью можно, например, расширять доступные smart cast'ы или уточнять анализ инициализированности переменных, т.е. делать мир лучше.
Вместе с тем, у текущей реализации контрактов есть две основные проблемы.
Во-первых, все контракты принимаются на веру; в случае, если разработчик случайно или намеренно сделал ошибку в контракте, это может привести к ошибкам или падениям программы.
Во-вторых, контракты необходимо писать вручную, что не всегда является удобным для разработчика.
В данном проекте предлагается попробовать справиться с одной или с обеими проблемами контрактов.
Подойдет как разработка отдельного (внешнего) инструмента, так и (для смелых духом) интеграция внутрь самого компилятора Kotlin.