The following refactoring techniques were applied:
Rename the variable: The file "Mapping Context.java" had a boolean variable called isNew and it has been changed to isNewConcreteClass due to behavior and usage of that variable for knowing whether the concrete class has been introduced or not.
Extract Method: The file " ScoringClassMapBuilder.java" had a code of block, which was converted into a method named "getUnmatchedFields()" to specify which fields will be mapped and the remaining ones will be unmatched, which gets returned by the mentioned function.
Move Method: A new class called "ElementTypeClass.java" was created, which had the method called "defaultElementType()" and was moved to the given class due to its implementation from the original class called "Property.java" and later called in this class.
Push-Down Method: A method named "List
Pull-Up Method: The changes were made to three inter-related interfaces having a superclass and subclass relationship. The method called "void setMapperFactory()" was moved into the interface called "BaseSpecificition.java", which was implemented by the two interfaces called "Specification.java" and "AggregateSpecification.java".
The following refactoring techniques were applied: