“…Since the seminal work by Weimer et al [83] who relied on genetic programming to evolve program variants until one variant is found to satisfy the functional constraints of a test suite, the community has been interested in test-based techniques to repair programs without specifications. Thus, various approaches [12,13,18,19,25,26,32,33,38,45,48,49,52,53,55,62,65,83,84,92,93] have been proposed in the literature aiming at reducing manual debugging efforts through automatically generating patches. Beyond fixing syntactic errors, i.e., cases where the code violates some programming language specifications [16], the current challenges lie in fixing semantic bugs, i.e., cases where implementation of program behavior deviates from developer's intention [22,61].…”