An object, or an object declaration, is initialized lazily, when accessed for the first time.
A companion object is initialized when the corresponding class is loaded. It brings about the 'static' essence, although Kotlin does not inherently support static members.