Kotlin Companion Object Explained: Static Replacement, Meaning, and Best Practices | CodeTrail