Let’s put the MS discussion aside. I should not have brought it up.
I’m curious. Did the Kotlin portion of my comment help at all?
I think Kotlin is trying to provide alternatives to class methods for a number of situations. Keep the ‘class’ focused on instance methods/properties ONLY, and not mix class methods/properties with instance methods/properties.
Utility functions can often become extension functions, or get defined at the top (package) level. i.e. completely outside the class definition. Constants should be defined outside the class, and not in a companion object.
The object outside a class is for Singletons, and the companion object is a bit fuzzier. Factory/builder methods fit nicely into a companion.
At least that’s my interpretation/understanding/usage pattern right now.
For your setDefaultPermissions example, I would envision an extension function for the various types, and since the function is tied to a type, you can use the same name. And it can be more performant as the compiler will often inline extension functions.