SlideShare uma empresa Scribd logo
1 de 23
ICSE’2016 | Austin | May 19, 2016
Davood Mazinanian Nikolaos Tsantalis
: Clone Refactoring
Raphael Stein Zackary Valenta
1/20
38th International Conference on Software Engineering (ICSE'2016)
Formal Tool Demonstration Session
Department of Computer Science and Software Engineering
Concordia University
ICSE’2016 | Austin | May 19, 2016
Clones are harmful
• Error-prone due to inconsistent updates
(Juergens et al. @ ICSE’09)
• Increase maintenance effort and cost
(Lozano et al. @ ICSM’08)
• Change-prone
(Mondal et al. @ ACM SAC’12)
2/20
ICSE’2016 | Austin | May 19, 2016
Clones are good
• Positive impact on maintainability
(Kasper & Godfrey @ EMSE’08)
• Less buggy
Less effort to fix bugs
(Rahman, Bird & Devanbu @ EMSE’12)
3/20
ICSE’2016 | Austin | May 19, 2016
Clone management
Clones that change frequently & are buggy
might need some refactoring
4/20
ICSE’2016 | Austin | May 19, 2016
Motivation
Current clone refactoring support is poor
Tairas & Gray (IST’12) studied 1,200 Type-II
clones detected in 9 open-source projects:
• 10% could be refactored by Eclipse
• CeDAR (IST’12) refactored 19%
5/20
ICSE’2016 | Austin | May 19, 2016
Our goal
Help developers:
1. Explore clone groups and understand
their relations
2. Inspect and understand the differences
between clones
3. Refactor safely the clones
6/20
ICSE’2016 | Austin | May 19, 2016 7/20
ICSE’2016 | Austin | May 19, 2016
Clone import
8/20
ICSE’2016 | Austin | May 19, 2016
Subclone information
9/20
ICSE’2016 | Austin | May 19, 2016
Clone filtering
10/20
ICSE’2016 | Austin | May 19, 2016
Clone monitoring
11/20
ICSE’2016 | Austin | May 19, 2016 12/20
ICSE’2016 | Austin | May 19, 2016
Our approach
common
nesting trees
if (orientation == VERTICAL) {
Line2D line = new Line2D.Double();
double x0 = dataArea.getMinX();
double x1 = dataArea.getMaxX();
g2.setPaint(im.getOutlinePaint());
g2.setStroke(im.getOutlineStroke());
}
if (orientation == VERTICAL) {
Line2D line = new Line2D.Double();
double x0 = dataArea.getMinX();
double x1 = dataArea.getMaxX();
g2.setPaint(im.getOutlinePaint());
g2.setStroke(im.getOutlineStroke());
}
else if(orientation == HORIZONTAL) {
Line2D line = new Line2D.Double();
double y0 = dataArea.getMinY();
double y1 = dataArea.getMaxY();
g2.setPaint(im.getOutlinePaint());
g2.setStroke(im.getOutlineStroke());
}
Detected clones
Control Structure
Matching
PDG
Mapping
differences
unmapped
statements
Precondition
Examination
Refactorable clones
13/20
Assessing the Refactorability of Software Clones, IEEE TSE, Nov. 2015
ICSE’2016 | Austin | May 19, 2016
Clone pair visualization
14/20
ICSE’2016 | Austin | May 19, 2016
Semantic tooltips
15/20
ICSE’2016 | Austin | May 19, 2016
Renamed variables
16/20
ICSE’2016 | Austin | May 19, 2016 17/20
ICSE’2016 | Austin | May 19, 2016
Automatic clone refactoring
Based on the location of the clones, the best
refactoring strategy is automatically determined
1. Extract Method (same file)
2. Pull Up Method (common superclass)
a) Template Method (clones call local methods)
b) Extract Superclass (external common superclass)
3. Introduce Utility Method (static clones)
18/20
ICSE’2016 | Austin | May 19, 2016
Refactoring Preview
19/20
ICSE’2016 | Austin | May 19, 2016
Future work
• Support multi-clone refactoring (>2 clones)
• Explore lambda expressions
• Automated refactoring engine testing
20/20
ICSE’2016 | Austin | May 19, 2016
Visit our project at
http://jdeodorant.org
21/20
ICSE’2016 | Austin | May 19, 2016
Advanced matches
22/20
ICSE’2016 | Austin | May 19, 2016
Advanced matches
23/20

Mais conteúdo relacionado

Destaque

Destaque (16)

Rio grande do sul
Rio grande do sulRio grande do sul
Rio grande do sul
 
Efficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model TransformationsEfficient Model Partitioning for Distributed Model Transformations
Efficient Model Partitioning for Distributed Model Transformations
 
Content Strategy for Naysayers
Content Strategy for NaysayersContent Strategy for Naysayers
Content Strategy for Naysayers
 
Atividades AEE
Atividades AEEAtividades AEE
Atividades AEE
 
SiriusCon2016 - Extensible Sirius Editors for the Palladio Component Model
SiriusCon2016 - Extensible Sirius Editors for the Palladio Component ModelSiriusCon2016 - Extensible Sirius Editors for the Palladio Component Model
SiriusCon2016 - Extensible Sirius Editors for the Palladio Component Model
 
All Electrical Engineering Formulas
All Electrical Engineering FormulasAll Electrical Engineering Formulas
All Electrical Engineering Formulas
 
Pirateship - growing a great crew: workshop facilitation guide
Pirateship - growing a great crew: workshop facilitation guidePirateship - growing a great crew: workshop facilitation guide
Pirateship - growing a great crew: workshop facilitation guide
 
A Very British Black Friday: The Real Winners and Losers
A Very British Black Friday: The Real Winners and LosersA Very British Black Friday: The Real Winners and Losers
A Very British Black Friday: The Real Winners and Losers
 
The Modern East, Jimmy Kmeid at Dubai Lynx
The Modern East, Jimmy Kmeid at Dubai LynxThe Modern East, Jimmy Kmeid at Dubai Lynx
The Modern East, Jimmy Kmeid at Dubai Lynx
 
The rollercoaster of emotions: How brands and agencies can enjoy the ride
The rollercoaster of emotions: How brands and agencies can enjoy the rideThe rollercoaster of emotions: How brands and agencies can enjoy the ride
The rollercoaster of emotions: How brands and agencies can enjoy the ride
 
Excel to TestLink
Excel to TestLinkExcel to TestLink
Excel to TestLink
 
How Big is Your Lion? #CannesLions #EnlargeYourLion
How Big is Your Lion? #CannesLions #EnlargeYourLionHow Big is Your Lion? #CannesLions #EnlargeYourLion
How Big is Your Lion? #CannesLions #EnlargeYourLion
 
User Story Workshop
User Story WorkshopUser Story Workshop
User Story Workshop
 
Caderno de vocabulário
Caderno de vocabulário Caderno de vocabulário
Caderno de vocabulário
 
Aretha 2012
Aretha 2012Aretha 2012
Aretha 2012
 
Dental caries
Dental cariesDental caries
Dental caries
 

Mais de Nikolaos Tsantalis

Accurate and Efficient Refactoring Detection in Commit History
Accurate and Efficient Refactoring Detection in Commit HistoryAccurate and Efficient Refactoring Detection in Commit History
Accurate and Efficient Refactoring Detection in Commit History
Nikolaos Tsantalis
 
Improving the Unification of Software Clones Using Tree and Graph Matching Al...
Improving the Unification of Software Clones Using Tree and Graph Matching Al...Improving the Unification of Software Clones Using Tree and Graph Matching Al...
Improving the Unification of Software Clones Using Tree and Graph Matching Al...
Nikolaos Tsantalis
 
Code Smell Research: History and Future Directions
Code Smell Research: History and Future DirectionsCode Smell Research: History and Future Directions
Code Smell Research: History and Future Directions
Nikolaos Tsantalis
 
Preventive Software Maintenance: The Past, the Present, the Future
Preventive Software Maintenance: The Past, the Present, the FuturePreventive Software Maintenance: The Past, the Present, the Future
Preventive Software Maintenance: The Past, the Present, the Future
Nikolaos Tsantalis
 
An Empirical Study of Duplication in Cascading Style Sheets
An Empirical Study of Duplication in Cascading Style SheetsAn Empirical Study of Duplication in Cascading Style Sheets
An Empirical Study of Duplication in Cascading Style Sheets
Nikolaos Tsantalis
 
Ranking Refactoring Suggestions based on Historical Volatility
Ranking Refactoring Suggestions based on Historical VolatilityRanking Refactoring Suggestions based on Historical Volatility
Ranking Refactoring Suggestions based on Historical Volatility
Nikolaos Tsantalis
 
Feature Detection in Ajax-enabled Web Applications
Feature Detection in Ajax-enabled Web ApplicationsFeature Detection in Ajax-enabled Web Applications
Feature Detection in Ajax-enabled Web Applications
Nikolaos Tsantalis
 
A Multidimensional Empirical Study on Refactoring Activity
A Multidimensional Empirical Study on Refactoring ActivityA Multidimensional Empirical Study on Refactoring Activity
A Multidimensional Empirical Study on Refactoring Activity
Nikolaos Tsantalis
 
Unification and Refactoring of Clones
Unification and Refactoring of ClonesUnification and Refactoring of Clones
Unification and Refactoring of Clones
Nikolaos Tsantalis
 

Mais de Nikolaos Tsantalis (17)

Refactoring Mining - The key to unlock software evolution
Refactoring Mining - The key to unlock software evolutionRefactoring Mining - The key to unlock software evolution
Refactoring Mining - The key to unlock software evolution
 
CASCON 2023 Most Influential Paper Award Talk
CASCON 2023 Most Influential Paper Award TalkCASCON 2023 Most Influential Paper Award Talk
CASCON 2023 Most Influential Paper Award Talk
 
SANER 2019 Most Influential Paper Talk
SANER 2019 Most Influential Paper TalkSANER 2019 Most Influential Paper Talk
SANER 2019 Most Influential Paper Talk
 
Accurate and Efficient Refactoring Detection in Commit History
Accurate and Efficient Refactoring Detection in Commit HistoryAccurate and Efficient Refactoring Detection in Commit History
Accurate and Efficient Refactoring Detection in Commit History
 
Clone Refactoring with Lambda Expressions
Clone Refactoring with Lambda ExpressionsClone Refactoring with Lambda Expressions
Clone Refactoring with Lambda Expressions
 
Why We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub ContributorsWhy We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub Contributors
 
Migrating cascading style sheets to preprocessors
Migrating cascading style sheets to preprocessorsMigrating cascading style sheets to preprocessors
Migrating cascading style sheets to preprocessors
 
An empirical study on the use of CSS preprocessors
An empirical study on the use of CSS preprocessorsAn empirical study on the use of CSS preprocessors
An empirical study on the use of CSS preprocessors
 
An Empirical Study on the Use of CSS Preprocessors
An Empirical Study on the Use of CSS PreprocessorsAn Empirical Study on the Use of CSS Preprocessors
An Empirical Study on the Use of CSS Preprocessors
 
Improving the Unification of Software Clones Using Tree and Graph Matching Al...
Improving the Unification of Software Clones Using Tree and Graph Matching Al...Improving the Unification of Software Clones Using Tree and Graph Matching Al...
Improving the Unification of Software Clones Using Tree and Graph Matching Al...
 
Code Smell Research: History and Future Directions
Code Smell Research: History and Future DirectionsCode Smell Research: History and Future Directions
Code Smell Research: History and Future Directions
 
Preventive Software Maintenance: The Past, the Present, the Future
Preventive Software Maintenance: The Past, the Present, the FuturePreventive Software Maintenance: The Past, the Present, the Future
Preventive Software Maintenance: The Past, the Present, the Future
 
An Empirical Study of Duplication in Cascading Style Sheets
An Empirical Study of Duplication in Cascading Style SheetsAn Empirical Study of Duplication in Cascading Style Sheets
An Empirical Study of Duplication in Cascading Style Sheets
 
Ranking Refactoring Suggestions based on Historical Volatility
Ranking Refactoring Suggestions based on Historical VolatilityRanking Refactoring Suggestions based on Historical Volatility
Ranking Refactoring Suggestions based on Historical Volatility
 
Feature Detection in Ajax-enabled Web Applications
Feature Detection in Ajax-enabled Web ApplicationsFeature Detection in Ajax-enabled Web Applications
Feature Detection in Ajax-enabled Web Applications
 
A Multidimensional Empirical Study on Refactoring Activity
A Multidimensional Empirical Study on Refactoring ActivityA Multidimensional Empirical Study on Refactoring Activity
A Multidimensional Empirical Study on Refactoring Activity
 
Unification and Refactoring of Clones
Unification and Refactoring of ClonesUnification and Refactoring of Clones
Unification and Refactoring of Clones
 

Último

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Último (20)

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 

JDeodorant: Clone Refactoring

  • 1. ICSE’2016 | Austin | May 19, 2016 Davood Mazinanian Nikolaos Tsantalis : Clone Refactoring Raphael Stein Zackary Valenta 1/20 38th International Conference on Software Engineering (ICSE'2016) Formal Tool Demonstration Session Department of Computer Science and Software Engineering Concordia University
  • 2. ICSE’2016 | Austin | May 19, 2016 Clones are harmful • Error-prone due to inconsistent updates (Juergens et al. @ ICSE’09) • Increase maintenance effort and cost (Lozano et al. @ ICSM’08) • Change-prone (Mondal et al. @ ACM SAC’12) 2/20
  • 3. ICSE’2016 | Austin | May 19, 2016 Clones are good • Positive impact on maintainability (Kasper & Godfrey @ EMSE’08) • Less buggy Less effort to fix bugs (Rahman, Bird & Devanbu @ EMSE’12) 3/20
  • 4. ICSE’2016 | Austin | May 19, 2016 Clone management Clones that change frequently & are buggy might need some refactoring 4/20
  • 5. ICSE’2016 | Austin | May 19, 2016 Motivation Current clone refactoring support is poor Tairas & Gray (IST’12) studied 1,200 Type-II clones detected in 9 open-source projects: • 10% could be refactored by Eclipse • CeDAR (IST’12) refactored 19% 5/20
  • 6. ICSE’2016 | Austin | May 19, 2016 Our goal Help developers: 1. Explore clone groups and understand their relations 2. Inspect and understand the differences between clones 3. Refactor safely the clones 6/20
  • 7. ICSE’2016 | Austin | May 19, 2016 7/20
  • 8. ICSE’2016 | Austin | May 19, 2016 Clone import 8/20
  • 9. ICSE’2016 | Austin | May 19, 2016 Subclone information 9/20
  • 10. ICSE’2016 | Austin | May 19, 2016 Clone filtering 10/20
  • 11. ICSE’2016 | Austin | May 19, 2016 Clone monitoring 11/20
  • 12. ICSE’2016 | Austin | May 19, 2016 12/20
  • 13. ICSE’2016 | Austin | May 19, 2016 Our approach common nesting trees if (orientation == VERTICAL) { Line2D line = new Line2D.Double(); double x0 = dataArea.getMinX(); double x1 = dataArea.getMaxX(); g2.setPaint(im.getOutlinePaint()); g2.setStroke(im.getOutlineStroke()); } if (orientation == VERTICAL) { Line2D line = new Line2D.Double(); double x0 = dataArea.getMinX(); double x1 = dataArea.getMaxX(); g2.setPaint(im.getOutlinePaint()); g2.setStroke(im.getOutlineStroke()); } else if(orientation == HORIZONTAL) { Line2D line = new Line2D.Double(); double y0 = dataArea.getMinY(); double y1 = dataArea.getMaxY(); g2.setPaint(im.getOutlinePaint()); g2.setStroke(im.getOutlineStroke()); } Detected clones Control Structure Matching PDG Mapping differences unmapped statements Precondition Examination Refactorable clones 13/20 Assessing the Refactorability of Software Clones, IEEE TSE, Nov. 2015
  • 14. ICSE’2016 | Austin | May 19, 2016 Clone pair visualization 14/20
  • 15. ICSE’2016 | Austin | May 19, 2016 Semantic tooltips 15/20
  • 16. ICSE’2016 | Austin | May 19, 2016 Renamed variables 16/20
  • 17. ICSE’2016 | Austin | May 19, 2016 17/20
  • 18. ICSE’2016 | Austin | May 19, 2016 Automatic clone refactoring Based on the location of the clones, the best refactoring strategy is automatically determined 1. Extract Method (same file) 2. Pull Up Method (common superclass) a) Template Method (clones call local methods) b) Extract Superclass (external common superclass) 3. Introduce Utility Method (static clones) 18/20
  • 19. ICSE’2016 | Austin | May 19, 2016 Refactoring Preview 19/20
  • 20. ICSE’2016 | Austin | May 19, 2016 Future work • Support multi-clone refactoring (>2 clones) • Explore lambda expressions • Automated refactoring engine testing 20/20
  • 21. ICSE’2016 | Austin | May 19, 2016 Visit our project at http://jdeodorant.org 21/20
  • 22. ICSE’2016 | Austin | May 19, 2016 Advanced matches 22/20
  • 23. ICSE’2016 | Austin | May 19, 2016 Advanced matches 23/20

Notas do Editor

  1. so that we don’t have to apply the same changes multiple times.
  2. The import wizard checks if the clone fragments actually exist in the examined project. And fixes the clone instances that are syntactically incomplete (e.g., missing closing brackets, incomplete statements)
  3. Group A is a subclone of group B, if every clone instance in A is a subclone (i.e., a partial code fragment) of an instance in B.
  4. Group A is a subclone of group B, if every clone instance in A is a subclone (i.e., a partial code fragment) of an instance in B.
  5. In yellow color, we highlight the differences between matched statements. In red color, we highlight the statements that could not be matched. In green color we highlight semantically equivalent statements (statement having a different AST structure, but identical functionality)