So, while I regret to say it, thank you Kotlin for disposing of them since the mechanisms surrounding them weren't sufficient to properly support them. For now, unchecked exceptions + a convention of declaring 'throws' contracts still seems to be more effective for those types of scenarios. 😞