experimental macro support

Please add always `override` when you implement interface methods.