Synergising Program Analysis and Machine Learning for Program Repair