Reducing Code Complexity through Code Refactoring and Model-Based Rejuvenation