- 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)