Тотальная декомпозиция в Jetpack Compose. И причем здесь навигация

С выходом Jetpack Compose делать ui компоненты и, в целом, верстать стало проще. Да и сам инструмент так и навязывает переиспользовать ранее сделанные compose функции, делать их как можно меньше, чтобы можно было удобней переиспользовать.
Но что если это не всегда так удобно? Да и просто переиспользовать compose функции это слишком просто! Jetpack Compose дает куда большие возможности в вопросе декомпозиции задачи.
Простой пример: как переиспользовать compose функции, если мы строим многомодульное приложение? Нужно раскидать эти compose функции так, чтобы были доступны для разных модулей, но это все нужно организовать так, чтобы не наткнуться на circular dependency (при многомодульном построении приложения) или же чтобы это все не превратилось в "кашу" (при построении приложения в одном модуле), а также обойти кучу других проблем, которые могут возникнуть. Безусловно, решить этот пример можно множеством способов. Одно решение из множества, достаточно кардинальное, я опишу далее.

