Identifying Extract Class and Extract Method Refactoring Opportunities Through Analysis of Variable Declarations and Uses