private void updateMapperSet(TreeSet<UMLOperationBodyMapper> mapperSet, UMLOperation removedOperation, UMLOperation operationInsideAnonymousClass, UMLOperation addedOperation, int differenceInPosition) {
UMLOperationBodyMapper operationBodyMapper = new UMLOperationBodyMapper(removedOperation, operationInsideAnonymousClass, this);
operationBodyMapper.getMappings();
int mappings = operationBodyMapper.mappingsWithoutBlocks();
if(mappings > 0) {
int absoluteDifferenceInPosition = computeAbsoluteDifferenceInPositionWithinClass(removedOperation, addedOperation);
if(operationBodyMapper.nonMappedElementsT1() == 0 && operationBodyMapper.nonMappedElementsT2() == 0 && allMappingsAreExactMatches(operationBodyMapper, mappings)) {
mapperSet.add(operationBodyMapper);
}
else if(mappedElementsMoreThanNonMappedT1AndT2(mappings, operationBodyMapper) &&
absoluteDifferenceInPosition <= differenceInPosition &&
compatibleSignatures(removedOperation, addedOperation, absoluteDifferenceInPosition)) {
mapperSet.add(operationBodyMapper);
}
else if(mappedElementsMoreThanNonMappedT2(mappings, operationBodyMapper) &&
absoluteDifferenceInPosition <= differenceInPosition &&
isPartOfMethodExtracted(removedOperation, addedOperation)) {
mapperSet.add(operationBodyMapper);
}
else if(mappedElementsMoreThanNonMappedT1(mappings, operationBodyMapper) &&
absoluteDifferenceInPosition <= differenceInPosition &&
isPartOfMethodInlined(removedOperation, addedOperation)) {
mapperSet.add(operationBodyMapper);
}
}
}