I think there is a confusion between ‘class methods’ and the concept of a ‘class object’ as represented in kotlin by companion object.
The term ‘class method’, in java and in most languages, generally refers to: an otherwise described as ‘static’ method with no corresponding object instance accessible from the method, but included with the class because the functionality is useful within the class.
There is no exact equivalent to the java ‘class method’ in kotlin, the functions in the same namespace but external to the class are the closest equivalent.
The companion object introduces functionality not supported at a language level in Java, and for this reason all functionality of the companion object is not equivalent to any functionality of the java language. If you also program in languages like python or ruby, you encounter ‘class variables’, which are shared by all members of the class. These are possible because the class itself is an instance of an object and exists at run time, while the java class has no runtime object corresponding with the class itself. The companion object introduces a runtime object corresponding to the class itself, in addition to the objects corresponding to instances of the class.
Methods of the companion object as have access to the this ‘class runtime object instance’, making them quite distinct from ‘static’ methods which have direct access to no object. Extra functionality comes with a ‘cost’. So companion object methods can have functionality beyond what is possible with static methods, but are not a direct equivalent.
Think of each member of the ‘real class’, being instanced with a reference to the same singleton of a special ‘secondary class’ designed to hold data shared by all members of the ‘main class’. You are actually calling a method the secondary class with calling a companion object method, and not actually having a static method at all.
It is an interesting idea to have companion object methods that access no companion object data, detected and optimised to compile as static methods, but whether including static methods through this path is simple or obscure would need to be debated.