/// <summary>
 /// Gets the hash code
 /// </summary>
 /// <returns>Hash code</returns>
 public override int GetHashCode()
 {
     unchecked // Overflow is fine, just wrap
     {
         var hashCode = 41;
         // Suitable nullity checks etc, of course :)
         if (RepositoryHome != null)
         {
             hashCode = hashCode * 59 + RepositoryHome.GetHashCode();
         }
         if (TarmkMode != null)
         {
             hashCode = hashCode * 59 + TarmkMode.GetHashCode();
         }
         if (TarmkSize != null)
         {
             hashCode = hashCode * 59 + TarmkSize.GetHashCode();
         }
         if (SegmentCacheSize != null)
         {
             hashCode = hashCode * 59 + SegmentCacheSize.GetHashCode();
         }
         if (StringCacheSize != null)
         {
             hashCode = hashCode * 59 + StringCacheSize.GetHashCode();
         }
         if (TemplateCacheSize != null)
         {
             hashCode = hashCode * 59 + TemplateCacheSize.GetHashCode();
         }
         if (StringDeduplicationCacheSize != null)
         {
             hashCode = hashCode * 59 + StringDeduplicationCacheSize.GetHashCode();
         }
         if (TemplateDeduplicationCacheSize != null)
         {
             hashCode = hashCode * 59 + TemplateDeduplicationCacheSize.GetHashCode();
         }
         if (NodeDeduplicationCacheSize != null)
         {
             hashCode = hashCode * 59 + NodeDeduplicationCacheSize.GetHashCode();
         }
         if (PauseCompaction != null)
         {
             hashCode = hashCode * 59 + PauseCompaction.GetHashCode();
         }
         if (CompactionRetryCount != null)
         {
             hashCode = hashCode * 59 + CompactionRetryCount.GetHashCode();
         }
         if (CompactionForceTimeout != null)
         {
             hashCode = hashCode * 59 + CompactionForceTimeout.GetHashCode();
         }
         if (CompactionSizeDeltaEstimation != null)
         {
             hashCode = hashCode * 59 + CompactionSizeDeltaEstimation.GetHashCode();
         }
         if (CompactionDisableEstimation != null)
         {
             hashCode = hashCode * 59 + CompactionDisableEstimation.GetHashCode();
         }
         if (CompactionRetainedGenerations != null)
         {
             hashCode = hashCode * 59 + CompactionRetainedGenerations.GetHashCode();
         }
         if (CompactionMemoryThreshold != null)
         {
             hashCode = hashCode * 59 + CompactionMemoryThreshold.GetHashCode();
         }
         if (CompactionProgressLog != null)
         {
             hashCode = hashCode * 59 + CompactionProgressLog.GetHashCode();
         }
         if (Standby != null)
         {
             hashCode = hashCode * 59 + Standby.GetHashCode();
         }
         if (CustomBlobStore != null)
         {
             hashCode = hashCode * 59 + CustomBlobStore.GetHashCode();
         }
         if (CustomSegmentStore != null)
         {
             hashCode = hashCode * 59 + CustomSegmentStore.GetHashCode();
         }
         if (SplitPersistence != null)
         {
             hashCode = hashCode * 59 + SplitPersistence.GetHashCode();
         }
         if (RepositoryBackupDir != null)
         {
             hashCode = hashCode * 59 + RepositoryBackupDir.GetHashCode();
         }
         if (BlobGcMaxAgeInSecs != null)
         {
             hashCode = hashCode * 59 + BlobGcMaxAgeInSecs.GetHashCode();
         }
         if (BlobTrackSnapshotIntervalInSecs != null)
         {
             hashCode = hashCode * 59 + BlobTrackSnapshotIntervalInSecs.GetHashCode();
         }
         if (Role != null)
         {
             hashCode = hashCode * 59 + Role.GetHashCode();
         }
         if (RegisterDescriptors != null)
         {
             hashCode = hashCode * 59 + RegisterDescriptors.GetHashCode();
         }
         if (DispatchChanges != null)
         {
             hashCode = hashCode * 59 + DispatchChanges.GetHashCode();
         }
         return(hashCode);
     }
 }