Improving Patch Quality by Enhancing Key Components of Automatic Program Repair