Abstract type, we don't change it; should stay abstract (even without abstract methods).
Abstract type, we implement not all methods; should stay abstract.
Abstract type, we implement its abstract methods; should change to be concrete.
Abstract type, we try to access the previous body of an abstract method while mutating it; should throw an exception
Abstract type, implements abstract method in base type; should change to concrete.
Using AddMethod (with same signature and according attributes)
Using GetOrAddMutableMethod (creating an override)
Concrete type, we add abstract method; should change to be abstract. (not supported)