R. Ammons, J. Bodik, and . Larus, The most important part of this algorithm is the exploration of the recovery space that happens in steps #2 and #3 In step #2, when the system identifies several applicable recovery strategies, it takes care of applying them according to the execution history. If two failure recovery conditions are evaluated to true, it means that two recovery strategies are available. If the first one has already been executed and not the second one, the system selects the latter. This maximizes novelty discovery and knowledge exploration (whether the recovery is satisfying or not) The envisioned Mining specifications, Step #1 refers to the reified function failureDetected() of our above example Proceedings of the 29th Symposium on Principles of Programming Languages, 2002.

A. Avizienis, J. Laprie, B. Randell, and C. Landwehr, Basic concepts and taxonomy of dependable and secure computing, IEEE Transactions on Dependable and Secure Computing, vol.1, issue.1, pp.11-33, 2004.
DOI : 10.1109/TDSC.2004.2

E. T. Barr and M. Marron, Tardis: Affordable Time-travel Debugging in Managed Runtimes, In: SIGPLAN Not, vol.4910, pp.67-82, 2014.

E. Barr, M. Harman, P. Mcminn, M. Shahbaz, and S. Yoo, The Oracle Problem in Software Testing: A Survey, IEEE Transactions on Software Engineering, vol.41, issue.5, pp.507-525, 2015.
DOI : 10.1109/TSE.2014.2372785

A. Bartel, J. Klein, M. Monperrus, and Y. Le-traon, Automatically securing permission-based software by reducing the attack surface: an application to Android, Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, ASE 2012, pp.274-277
DOI : 10.1145/2351676.2351722

URL : https://hal.archives-ouvertes.fr/hal-00700074

A. Bartel, J. Klein, M. Monperrus, and Y. Le-traon, Static Analysis for Extracting Permission Checks of a Large Scale Framework: The Challenges and Solutions for Analyzing Android, IEEE Transactions on Software Engineering, 2014.
DOI : 10.1109/TSE.2014.2322867

URL : https://hal.archives-ouvertes.fr/hal-01055656

G. Baxter, M. Frean, J. Noble, M. Rickerby, H. Smith et al., Understanding the shape of Java software, Proceedings of Object-oriented Programming Systems Languages and Applications (OOPSLA), 2006.

B. Beizer, Software testing techniques, 2003.

J. M. Bieman, D. Dreilinger, and L. Lin, Using fault injection to increase software test coverage, Proceedings of ISSRE '96: 7th International Symposium on Software Reliability Engineering, pp.166-174, 1996.
DOI : 10.1109/ISSRE.1996.558776

B. Cabral and P. Marques, Exception Handling: A Field Study in Java and .NET, Proceedings of the European Conference on Object-Oriented Programming, pp.151-175, 2007.
DOI : 10.1007/978-3-540-73589-2_8

J. Campos, A. Riboira, A. Perez, and R. Abreu, GZoltar: an eclipse plug-in for testing and debugging, Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, ASE 2012, 2012.
DOI : 10.1145/2351676.2351752

S. Chandra, E. Torlak, S. Barman, and R. Bodik, Angelic debugging, Proceeding of the 33rd international conference on Software engineering, ICSE '11, pp.121-130, 2011.
DOI : 10.1145/1985793.1985811

R. Chang, A. Podgurski, and J. Yang, Finding what's not there, Proceedings of the 2007 international symposium on Software testing and analysis, ISSTA '07, 2007.
DOI : 10.1145/1273463.1273486

J. Chen and R. J. Patton, Robust model-based fault diagnosis for dynamic systems, 2012.
DOI : 10.1007/978-1-4615-5149-2

D. R. Cok, jSMTLIB: Tutorial, validation and adapter tools for SMT-LIBv2 " . In: NASA Formal Methods, pp.480-486, 2011.

B. Cornu, E. T. Barr, L. Seinturier, and M. Monperrus, Casper: Debugging Null Dereferences with Dynamic Causality Traces, 2015.
URL : https://hal.archives-ouvertes.fr/hal-01113988

B. Cornu, T. Durieux, L. Seinturier, and M. Monperrus, NPEFix: Automatic Runtime Repair of Null Pointer Exceptions in Java, 2015.
URL : https://hal.archives-ouvertes.fr/hal-01251960

B. Cornu, L. Seinturier, and M. Monperrus, Exception handling analysis and transformation using fault injection: Study of resilience against unanticipated exceptions, Information and Software Technology, vol.57, pp.66-76, 2015.
DOI : 10.1016/j.infsof.2014.08.004

URL : https://hal.archives-ouvertes.fr/hal-01062969

C. Csallner, Y. Smaragdakis, and T. Xie, DSD-Crasher, ACM Transactions on Software Engineering and Methodology, vol.17, issue.2, pp.1-37, 2008.
DOI : 10.1145/1348250.1348254

K. Cwalina and B. Abrams, Framework Design Guidelines: Conventions, Idioms, and Patterns for Reuseable .NET Libraries, 2008.

V. Dallmeier, C. Lindig, and A. Zeller, Lightweight bug localization with AMPLE, Proceedings of the Sixth sixth international symposium on Automated analysis-driven debugging , AADEBUG'05, pp.99-104, 2005.
DOI : 10.1145/1085130.1085143

V. Debroy and W. Wong, Using Mutation to Automatically Suggest Fixes for Faulty Programs, 2010 Third International Conference on Software Testing, Verification and Validation, pp.65-74, 2010.
DOI : 10.1109/ICST.2010.66

F. Demarco, J. Xuan, D. L. Berre, and M. Monperrus, Automatic repair of buggy if conditions and missing preconditions with SMT, Proceedings of the 6th International Workshop on Constraints in Software Testing, Verification, and Analysis, CSTVA 2014, 2014.
DOI : 10.1145/2593735.2593740

URL : https://hal.archives-ouvertes.fr/hal-00977798

T. Durieux, M. Martinez, M. Monperrus, R. Sommerard, and J. Xuan, Automatic Repair of Real Bugs: An Experience Report on the Defects4J Dataset, 2015.
URL : https://hal.archives-ouvertes.fr/hal-01162221

D. Engler, D. Chen, S. Hallem, A. Chou, and B. Chelf, Bugs as deviant behavior: A general approach to inferring errors in systems code, Proceedings of Symposium on Operating Systems Principles (SOSP, 2001.

D. Engler and K. Ashcraft, RacerX, ACM SIGOPS Operating Systems Review, vol.37, issue.5, pp.237-252, 2003.
DOI : 10.1145/1165389.945468

M. D. Ernst, J. Cockrell, W. G. Griswold, and D. Notkin, Dynamically Discovering Likely Program Invariants to Support Program Evolution, IEEE Transactions on Software Engineering, vol.272, pp.99-123, 2001.
DOI : 10.1145/302405.302467

M. D. Ernst, J. Cockrell, W. Griswold, and D. Notkin, Dynamically discovering likely program invariants to support program evolution, IEEE Transactions on Software Engineering, vol.272, pp.99-123, 2001.

J. Falleri, F. Morandat, X. Blanc, M. Martinez, and M. Monperrus, Fine-grained and accurate source code differencing, Proceedings of the 29th ACM/IEEE international conference on Automated software engineering, ASE '14, pp.313-324
DOI : 10.1145/2642937.2642982

URL : https://hal.archives-ouvertes.fr/hal-01054552

C. Fu, R. P. Martin, K. Nagaraja, T. D. Nguyen, B. G. Ryder et al., Compiler-directed program-fault coverage for highly available Java internet services, 2003 International Conference on Dependable Systems and Networks, 2003. Proceedings.
DOI : 10.1109/DSN.2003.1209969

S. Ghosh and J. L. Kelly, Bytecode fault injection for Java software, Journal of Systems and Software, vol.81, issue.11, pp.2034-2043, 2008.
DOI : 10.1016/j.jss.2008.02.047

M. Gomez, M. Martinez, M. Monperrus, and R. Rouvoy, When App Stores Listen to the Crowd to Fight Bugs in the Wild, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, 2015.
DOI : 10.1109/ICSE.2015.195

URL : https://hal.archives-ouvertes.fr/hal-01105173

J. B. Goodenough, Exception handling: issues and a proposed notation, Communications of the ACM, vol.18, issue.12, pp.683-696, 1975.
DOI : 10.1145/361227.361230

J. Gosling, B. Joy, G. Steele, and G. Bracha, Java Language Specification, 2005.

C. L. Goues, T. Nguyen, S. Forrest, and W. Weimer, GenProg: A Generic Method for Automatic Software Repair, IEEE Transactions on Software Engineering, vol.38, issue.1, pp.54-72, 2012.
DOI : 10.1109/TSE.2011.104

S. Gulwani, Dimensions in program synthesis, Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming, PPDP '10, pp.13-24, 2010.
DOI : 10.1145/1836089.1836091

S. Gulwani, S. Jha, A. Tiwari, and R. Venkatesan, Synthesis of loop-free programs, In: ACM SIGPLAN Notices, vol.466, pp.62-73, 2011.

W. Hamscher, Readings in model-based diagnosis, 1992.

S. Hangal and M. S. Lam, Tracking down software bugs using automatic anomaly detection, Proceedings of the 24th international conference on Software engineering , ICSE '02, pp.291-301, 2002.
DOI : 10.1145/581376.581377

D. L. Heine and M. S. Lam, A practical flow-sensitive and context-sensitive C and C++ memory leak detector, In: ACM SIGPLAN Notices, vol.385, pp.168-181, 2003.

J. J. Horning, H. C. Lauer, P. M. Melliar-smith, and B. Randell, A program structure for error detection and recovery, 1974.

W. Howden, Theoretical and Empirical Studies of Program Testing, IEEE Transactions on Software Engineering SE-4, pp.293-298, 1978.
DOI : 10.1109/TSE.1978.231514

D. Jeffrey, N. Gupta, and R. Gupta, Fault localization using value replacement, Proceedings of the 2008 international symposium on Software testing and analysis, ISSTA '08, pp.167-178, 2008.
DOI : 10.1145/1390630.1390652

S. Jha, S. Gulwani, S. A. Seshia, and A. Tiwari, Oracle-guided component-based program synthesis, Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, ICSE '10, pp.215-224, 2010.
DOI : 10.1145/1806799.1806833

S. Katz and Z. Manna, Towards Automatic Debugging of Programs, Proceedings of the International Conference on Reliable Software, pp.143-155, 1975.

D. Kim, J. Nam, J. Song, S. S. Kim, T. Kim et al., Automatic Patch Generation Learned From Human-Written Patches Predicting Faults From Cached History, Proceedings of the 29th International Conference on Software Engineering, pp.489-498, 2007.

B. A. Kitchenham, S. L. Pfleeger, L. M. Pickard, P. W. Jones, D. C. Hoaglin et al., Preliminary guidelines for empirical research in software engineering, IEEE Transactions on Software Engineering, vol.28, issue.8, pp.721-734, 2002.
DOI : 10.1109/TSE.2002.1027796

J. Laprie, From Dependability to Resilience, Proceedings of the International Conference on Dependable Systems and Networks, 2008.

C. , L. Goues, M. Dewey-vogt, S. Forrest, and W. Weimer, A Systematic Study of Automated Program Repair: Fixing 55 Out of 105 Bugs for $8 Each, Proceedings of the International Conference on Software Engineering. 2012, pp.3-13

J. Lehman and K. O. Stanley, Exploiting Open-Endedness to Solve Problems Through the Search for Novelty, In: ALIFE, pp.329-336, 2008.

Z. Li and Y. Zhou, PR-Miner: Automatically Extracting Implicit Programming Rules and Detecting Violations in Large Software Code, Proc. of the 10th European Software Engineering Conference Held Jointly with 13th International Symposium on Foundations of Software Engineering, pp.306-315, 2005.

B. Livshits and T. Zimmermann, DynaMine: Finding Common Error Patterns by Mining Software Revision Histories, Proceedings of the European Software Engineering Conference Held Jointly with International Symposium on Foundations of Software Engineering, 2005.

F. Long, S. Sidiroglou-douskos, and M. C. Rinard, Automatic Runtime Error Repair and Containment via Recovery Shepherding, ACM SIGPLAN Conference on Programming Language Design and Implementation, 2014.

S. L. Marcote and M. Monperrus, Automatic Repair of Infinite Loops, 2015.
URL : https://hal.archives-ouvertes.fr/hal-01144026

M. Martinez and M. Monperrus, ASTOR: Evolutionary Automatic Software Repair for Java, 2014.
URL : https://hal.archives-ouvertes.fr/hal-01075976

M. Martinez and M. Monperrus, Mining software repair models for reasoning on the search space of automated program fixing, Empirical Software Engineering, vol.31, issue.6, pp.176-205, 2013.
DOI : 10.1007/s10664-013-9282-8

URL : https://hal.archives-ouvertes.fr/hal-00903804

M. Martinez, W. Weimer, and M. Monperrus, Do the fix ingredients already exist? an empirical inquiry into the redundancy assumptions of program repair approaches, Companion Proceedings of the 36th International Conference on Software Engineering, ICSE Companion 2014, 2014.
DOI : 10.1145/2591062.2591114

URL : https://hal.archives-ouvertes.fr/hal-00965410

T. J. Mccabe, A Complexity Measure, IEEE Transactions on Software Engineering, vol.2, issue.4, pp.308-320, 1976.
DOI : 10.1109/TSE.1976.233837

S. Mechtaev, J. Yi, and A. Roychoudhury, DirectFix: Looking for Simple Program Repairs, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, 2015.
DOI : 10.1109/ICSE.2015.63

D. Mendez, B. Baudry, and M. Monperrus, Empirical evidence of large-scale diversity in API usage of object-oriented software, 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM), 2013.
DOI : 10.1109/SCAM.2013.6648183

URL : https://hal.archives-ouvertes.fr/hal-00844753

B. Meyer, Applying 'design by contract', Computer, vol.25, issue.10, pp.40-51, 1992.
DOI : 10.1109/2.161279

M. Monperrus, A Critical Review ofAutomatic Patch Generation Learned from Human- Written Patches": Essay on the Problem Statement and the Evaluation of Automatic Software Repair, Proceedings of the International Conference on Software Engineering. 2014, pp.234-242

M. Monperrus, Automatic Software Repair: a Bibliography, 2015.
URL : https://hal.archives-ouvertes.fr/hal-01206501

M. Monperrus and B. Baudry, Two Flavors in Automated Software Repair: Rigid Repair and Plastic Repair, Dagstuhl Preprint, 2013.
URL : https://hal.archives-ouvertes.fr/hal-00844735

M. Monperrus, M. Bruch, and M. Mezini, Detecting Missing Method Calls in Object-Oriented Software, Proceedings of the 24th European Conference on Object-Oriented Programming, 2010.
DOI : 10.1007/978-3-642-14107-2_2

M. Monperrus, M. Eichberg, E. Tekes, and M. Mezini, What should developers be aware of? An empirical study on the directives of API documentation, Empirical Software Engineering, vol.26, issue.6, pp.703-737, 2012.
DOI : 10.1007/s10664-011-9186-4

URL : https://hal.archives-ouvertes.fr/hal-00702183

M. Monperrus, M. Germain-de-montauzan, B. Cornu, R. Marvie, and R. Rouvoy, Challenging Analytical Knowledge On Exception-Handling: An Empirical Study of 32 Java Software Packages, 2014.
URL : https://hal.archives-ouvertes.fr/hal-01093908

M. Monperrus and M. Mezini, Detecting missing method calls as violations of the majority rule, ACM Transactions on Software Engineering and Methodology, vol.22, issue.1, pp.1-25, 2013.
DOI : 10.1145/2430536.2430541

URL : https://hal.archives-ouvertes.fr/hal-00702196

L. De-moura and N. Bjørner, Z3: An Efficient SMT Solver, Proceedings of Tools and Algorithms for the Construction and Analysis of Systems, pp.337-340, 2008.
DOI : 10.1007/978-3-540-78800-3_24

L. Naish, H. J. Lee, and K. Ramamohanarao, A model for spectra-based software diagnosis, ACM Transactions on Software Engineering and Methodology, vol.20, issue.3, p.11, 2011.
DOI : 10.1145/2000791.2000795

H. D. Nguyen, D. Qi, A. Roychoudhury, and S. Chandra, SemFix: Program repair via semantic analysis, 2013 35th International Conference on Software Engineering (ICSE), 2013.
DOI : 10.1109/ICSE.2013.6606623

T. T. Nguyen, H. A. Nguyen, N. H. Pham, J. M. Kofahi, and T. N. Nguyen, Graphbased mining of multiple object usage patterns, Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering, pp.383-392, 2009.

T. T. Nguyen, H. A. Nguyen, N. H. Pham, J. Kofahi, and T. N. Nguyen, Recurring bug fixes in object-oriented programs, Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, ICSE '10, pp.315-324, 2010.
DOI : 10.1145/1806799.1806847

K. Pan, S. Kim, and E. J. Whitehead-jr, Toward an understanding of bug fix patterns, Empirical Software Engineering, vol.31, issue.6, pp.286-315, 2009.
DOI : 10.1007/s10664-008-9077-5

R. Pawlak, M. Monperrus, N. Petitprez, C. Noguera, and L. Seinturier, : A library for implementing analyses and transformations of Java source code, Software: Practice and Experience, 2015.
DOI : 10.1002/spe.2346

Y. Pei, C. A. Furia, M. Nordio, Y. Wei, B. Meyer et al., Automated Fixing of Programs with Contracts, IEEE Transactions on Software Engineering, vol.40, issue.5, pp.427-449, 2014.
DOI : 10.1109/TSE.2014.2312918

D. E. Porter, S. Boyd-wickizer, J. Howell, R. Olinsky, and G. C. Hunt, Rethinking the library OS from the top down, In: ACM SIGPLAN Notices, vol.463, pp.291-304, 2011.

Y. Qi, X. Mao, Y. Lei, Z. Dai, and C. Wang, The strength of random search on automated program repair, Proceedings of the 36th International Conference on Software Engineering, ICSE 2014, pp.254-265, 2014.
DOI : 10.1145/2568225.2568254

Z. Qi, F. Long, S. Achour, and M. Rinard, An analysis of patch plausibility and correctness for generate-and-validate patch generation systems, Proceedings of the 2015 International Symposium on Software Testing and Analysis, ISSTA 2015
DOI : 10.1145/2771783.2771791

F. Ricca and P. Tonella, Detecting Anomaly and Failure in Web Applications, IEEE Multimedia, vol.13, issue.2, pp.44-51, 2006.
DOI : 10.1109/MMUL.2006.26

M. Rinard, Acceptability-oriented Computing, In: ACM SIGPLAN Notices, vol.3812, pp.57-75, 2003.

P. Rovner, Extending Modula-2 to Build Large, Integrated Systems, IEEE Software, vol.3, issue.6, pp.46-57, 1986.
DOI : 10.1109/MS.1986.229476

W. Savitch, JAVA An Introduction to Problem Solving and Programming, 2012.

A. Sethi, A Survey of Fault Localization Techniques in Computer Networks, Science of Computer Programming, vol.532, pp.165-194, 2004.

S. Sinha and M. J. Harrold, Analysis and testing of programs with exception handling constructs, IEEE Transactions on Software Engineering, vol.26, issue.9, pp.849-871, 2000.
DOI : 10.1109/32.877846

S. Sinha, A. Orso, and M. J. Harrold, Automated support for development, maintenance, and testing in the presence of implicit flow control, Proceedings. 26th International Conference on Software Engineering, pp.336-345, 2004.
DOI : 10.1109/ICSE.2004.1317456

M. Staats, M. W. Whalen, and M. P. Heimdahl, Programs, tests, and oracles, Proceeding of the 33rd international conference on Software engineering, ICSE '11, pp.391-400, 2011.
DOI : 10.1145/1985793.1985847

K. S. Trivedi, D. S. Kim, and R. Ghosh, Resilience in computer systems and networks, Proceedings of the 2009 International Conference on Computer-Aided Design, ICCAD '09, pp.74-77, 2009.
DOI : 10.1145/1687399.1687415

R. Vallée-rai, P. Co, E. Gagnon, L. Hendren, P. Lam et al., Soot-a Java bytecode optimization framework, Proceedings of the Conference of the Centre for Advanced Studies on Collaborative Research (CASCON). IBM Press, p.13, 1999.

A. Wasylkowski, A. Zeller, and C. Lindig, Detecting object usage anomalies, Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering , ESEC-FSE '07, pp.35-44, 2007.
DOI : 10.1145/1287624.1287632

W. Weimer, Z. P. Fry, and S. Forrest, Leveraging program equivalence for adaptive program repair: Models and first results, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp.356-366, 2013.
DOI : 10.1109/ASE.2013.6693094

C. C. Williams and J. K. Hollingsworth, Automatic mining of source code repositories to improve bug finding techniques, IEEE Transactions on Software Engineering, vol.31, issue.6, pp.466-480, 2005.
DOI : 10.1109/TSE.2005.63

J. Xuan, B. Cornu, M. Martinez, B. Baudry, L. Seinturier et al., Dynamic Analysis can be Improved with Automatic Test Suite Refactoring, 2015.
URL : https://hal.archives-ouvertes.fr/hal-01162220

J. Xuan, M. Matias, F. Demarco, L. Sebastian, D. Thomas et al., Nopol: Automatic Repair of Conditional Statement Bugs in Large-Scale Object- Oriented Programs, Underreview at IEEE Transactions on Software Engineering

J. Xuan and M. Monperrus, Learning to Combine Multiple Ranking Metrics for Fault Localization, 2014 IEEE International Conference on Software Maintenance and Evolution, 2014.
DOI : 10.1109/ICSME.2014.41

URL : https://hal.archives-ouvertes.fr/hal-01018935

J. Xuan and M. Monperrus, Test case purification for improving fault localization, Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2014, 2014.
DOI : 10.1145/2635868.2635906

URL : https://hal.archives-ouvertes.fr/hal-01061911

J. Xuan, X. Xie, and M. Monperrus, Crash reproduction via test case mutation: let existing test cases help, Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, ESEC/FSE 2015, 2015.
DOI : 10.1145/2786805.2803206

URL : https://hal.archives-ouvertes.fr/hal-01172102

J. Yang, D. Evans, D. Bhardwaj, T. Bhat, and M. Das, Perracotta, Proceeding of the 28th international conference on Software engineering , ICSE '06, 2006.
DOI : 10.1145/1134285.1134325

P. Zhang and S. Elbaum, Amplifying tests to validate exception handling code, Proceedings of the International Conference on Software Engineering, pp.595-605, 2012.

X. Zhang, N. Gupta, and R. Gupta, Locating faults through automated predicate switching, Proceeding of the 28th international conference on Software engineering , ICSE '06, pp.272-281, 2006.
DOI : 10.1145/1134285.1134324