But, what are we ‘overriding’, and who the hell is this “Main”?!
You’re overriding the base implementation that exists in MonoBehavior in favor of your implementation, the state machine needs to have some consistency when calling methods.
Main is just a another method available, probably not documented due to UT either not expecting a user to override it typically or it has a very particular execution path that is generally covered by Awake/Start.