This is a bit a messy PR, it introduces functionality, adds tests for it, and also adds tests for lifecycle hooks, which is unrelated, but that's how it started, so I didn't branch to a separate PR for it. I won't squash commits, so the history will be preserved.
Description
This is a bit a messy PR, it introduces functionality, adds tests for it, and also adds tests for lifecycle hooks, which is unrelated, but that's how it started, so I didn't branch to a separate PR for it. I won't squash commits, so the history will be preserved.