Support for return without expression [ci skip]
Support for throw any exception [ci skip]
Initial refactor to support interfaces [ci skip]