  Automated Program Repair has attracted significant research in recent years,
leading to diverse techniques that focus on two main directions: search-based
and semantic-based program repair. The former techniques often face challenges
due to the vast search space, resulting in difficulties in identifying correct
solutions, while the latter approaches are constrained by the capabilities of
the underlying semantic analyser, limiting their scalability. In this paper, we
propose NEVERMORE, a novel learning-based mechanism inspired by the adversarial
nature of bugs and fixes. NEVERMORE is built upon the Generative Adversarial
Networks architecture and trained on historical bug fixes to generate repairs
that closely mimic human-produced fixes. Our empirical evaluation on 500
real-world bugs demonstrates the effectiveness of NEVERMORE in bug-fixing,
generating repairs that match human fixes for 21.2% of the examined bugs.
Moreover, we evaluate NEVERMORE on the Defects4J dataset, where our approach
generates repairs for 4 bugs that remained unresolved by state-of-the-art
baselines. NEVERMORE also fixes another 8 bugs which were only resolved by a
subset of these baselines. Finally, we conduct an in-depth analysis of the
impact of input and training styles on NEVERMORE's performance, revealing where
the chosen style influences the model's bug-fixing capabilities.
