Question: Is there any way to annotate variable in Kotlin which is `null` on application start and after it is created it cannot be assigned to `null` again?

I can't set field as e.g. `var someField: Boolean?` because it can be nulled at some point or `lateinit var someField: Boolean` because it is expected that field is initialized before it will be used (or maybe this is proper way to resolve my situation?).

Answer: 
I'm not sure I understand why `lateinit` doesn't work for you, other than that it doesn't work for primitive types - but the [`notNull` delegate](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.properties/-delegates/not-null.html) might be what you're looking for:

```
class X {
    var z: String by Delegates.notNull()
}

val x1 = X()
x1.z = "foo"
println(x1.z) // foo

val x2 = X()
println(x2.z) // IllegalStateException: Property z should be initialized before get.

```

It will give you an exception if you read it before setting it, and otherwise the property will have a non-null type.
Declare it with latenit: `lateinit var someField: Boolean`   

and after you assign a non-null value, use it like this `someField!!`   

With this annotation you are saying to the compiler that `somefield` is not `null`, but it's your responsibility to keep it non-null.