“…Code smells, i.e., symptoms of poor design and implementation choices applied by programmers during the development of a software project [35], represent an important factor contributing to technical debt [53]. The research community spent a lot of effort studying the extent to which code smells tend to remain in a software project for long periods of time [4], [22], [61], [84], as well as their negative impact on non-functional properties of source code, such as program comprehension [1], change-and fault-proneness [48], [49], testability [77], [68] and, more generally, maintainability [97], [111], [109]. As a consequence, several tools and techniques have been proposed to help developers in detecting code smells and to suggest refactoring opportunities [12], [8], [65], [67], [74], [75], [100].…”