Identifying Patch Correctness in Test-Based Automatic Program Repair