@Override
  public int hashCode() {
    return new HashCodeBuilder(17, 37)
        .append(getDirName())
        .append(getFilesAdded())
        .append(getFilesRetained())
        .append(getFilesRemoved())
        .append(getSubDirsAdded())
        .append(getSubDirsRetained())
        .append(getSubDirsRemoved())
        .toHashCode();
  }
Subdirectories that are already present in the previous snapshot, but don't exist in the local snapshot,
and hence all of their contents need to be recursively removed.
samza-core/src/main/java/org/apache/samza/storage/blobstore/diff/DirDiff.java