/// <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 (Name != null)
         {
             hashCode = hashCode * 59 + Name.GetHashCode();
         }
         if (MinPoolSize != null)
         {
             hashCode = hashCode * 59 + MinPoolSize.GetHashCode();
         }
         if (MaxPoolSize != null)
         {
             hashCode = hashCode * 59 + MaxPoolSize.GetHashCode();
         }
         if (QueueSize != null)
         {
             hashCode = hashCode * 59 + QueueSize.GetHashCode();
         }
         if (MaxThreadAge != null)
         {
             hashCode = hashCode * 59 + MaxThreadAge.GetHashCode();
         }
         if (KeepAliveTime != null)
         {
             hashCode = hashCode * 59 + KeepAliveTime.GetHashCode();
         }
         if (BlockPolicy != null)
         {
             hashCode = hashCode * 59 + BlockPolicy.GetHashCode();
         }
         if (ShutdownGraceful != null)
         {
             hashCode = hashCode * 59 + ShutdownGraceful.GetHashCode();
         }
         if (Daemon != null)
         {
             hashCode = hashCode * 59 + Daemon.GetHashCode();
         }
         if (ShutdownWaitTime != null)
         {
             hashCode = hashCode * 59 + ShutdownWaitTime.GetHashCode();
         }
         if (Priority != null)
         {
             hashCode = hashCode * 59 + Priority.GetHashCode();
         }
         return(hashCode);
     }
 }