Enhancing automated debugging for java programs through data-flow analysis and automated program repair