Tips on changing the compiler to add more checks

For some context, see: NRE from an "uninitialized this" in constructor

How should I go about changing the Kotlin compiler in order to provide more extensive checks against access to uninitialized properties in init blocks? What parts of it should I study first?

Probably the easiest way is to look at PR’s that do similar things if you can find any. Otherwise I suggest you join slack here:
This might take a day or 2 for you to get accepted but there is a channel there for that. I guess there is a better chance of getting tips there as this is quite a specific question and except for the JetBrains members not many people here work on the compiler and I don’t know how frequently those who do answer here.