program. Refactoring engines are tools that automate the application of refactorings: first the
user chooses a refactoring to apply, then the engine checks if the transformation is safe, and
if so, transforms the program. Refactoring engines are a key component of modern IDEs,
and programmers rely on them to perform refactorings. A bug in the refactoring engine can
have severe consequences as it can erroneously change large bodies of source code. We …