private static FilePatchStatus getStatus(final TextFilePatch patch) {
    final String beforeName = patch.getBeforeName().replace("\\", "/");
    final String afterName = patch.getAfterName().replace("\\", "/");

    if (patch.isNewFile() || (beforeName == null)) {
      return FilePatchStatus.ADDED;
    } else if (patch.isDeletedFile() || (afterName == null)) {
      return FilePatchStatus.DELETED;
    }

    if (beforeName.equals(afterName)) return FilePatchStatus.MODIFIED;
    return FilePatchStatus.MOVED_OR_RENAMED;
  }
 private String loadContent(final TextFilePatch patch) throws ApplyPatchException {
   if (patch.isNewFile()) {
     return patch.getNewFileText();
   }
   if (patch.isDeletedFile()) {
     return null;
   }
   final GenericPatchApplier applier =
       new GenericPatchApplier(getBaseContent(), patch.getHunks());
   if (applier.execute()) {
     return applier.getAfter();
   }
   throw new ApplyPatchException("Apply patch conflict");
 }