private FailedRecord correct(FailedRecord fr) {
   if (fr.getOperation() == Operation.LOCAL_CHANGE
       || fr.getOperation() == Operation.LOCAL_RENAME) {
     if (StringUtils.isEmpty(fr.getRemoteFileId()) || StringUtils.isEmpty(fr.getError())) {
       fr.setOperation(Operation.LOCAL_INSERT);
     } else if (!StringUtils.isEmpty(fr.getError())
         && fr.getError().startsWith("Local file doesn't exist")) {
       return null;
     }
   }
   if (fr.getOperation() == Operation.LOCAL_INSERT) {
     if (!StringUtils.isEmpty(fr.getError())
         && fr.getError().startsWith("Local file doesn't exist")) {
       return null;
     }
   }
   if (fr.getOperation() == Operation.LOCAL_DELETE
       && (StringUtils.isEmpty(fr.getRemoteFileId()) || "404".equals(fr.getError()))) {
     return null;
   }
   if ("404".equals(fr.getError())
       && (fr.getOperation() == Operation.LOCAL_CHANGE
           || fr.getOperation() == Operation.LOCAL_DELETE
           || fr.getOperation() == Operation.LOCAL_RENAME)) {
     // No such file
     fr.setOperation(Operation.LOCAL_INSERT);
     return fr;
   }
   if ("404".equals(fr.getError())
       && (fr.getOperation() == Operation.REMOTE_INSERT
           || fr.getOperation() == Operation.REMOTE_CHANGE
           || fr.getOperation() == Operation.REMOTE_RENAME
           || fr.getOperation() == Operation.REMOTE_DELETE)) {
     return null;
   }
   return fr;
 }