I think this is a pretty simple one to address. Basically if you use REMOVE_BEAN to remove a Bean from the BeanFactory, when the Swiz instance is later torn down, it will throw an error. This is because during teardown, the BeanProviders are looped over and each Bean within them is torn down. Because the removed bean was already torn down and removed, the bean sitting in the BeanProvider is essentially an empty shell, with nothing but an id/name. As a result, tearDownBean() fails with a null pointer during its processing.
For a fix, I tested adding a simple check at the start of tearDownBean() and it works correctly: