Refactor checkpoint recovery methods to ProgramCounter class