/// <summary>
 /// Gets the hash code
 /// </summary>
 /// <returns>Hash code</returns>
 public override int GetHashCode()
 {
     unchecked // Overflow is fine, just wrap
     {
         int hashCode = 41;
         if (Context != null)
         {
             hashCode = hashCode * 59 + Context.GetHashCode();
         }
         if (DefaultValue != null)
         {
             hashCode = hashCode * 59 + DefaultValue.GetHashCode();
         }
         if (Description != null)
         {
             hashCode = hashCode * 59 + Description.GetHashCode();
         }
         if (Label != null)
         {
             hashCode = hashCode * 59 + Label.GetHashCode();
         }
         if (Name != null)
         {
             hashCode = hashCode * 59 + Name.GetHashCode();
         }
         if (Required != null)
         {
             hashCode = hashCode * 59 + Required.GetHashCode();
         }
         if (Type != null)
         {
             hashCode = hashCode * 59 + Type.GetHashCode();
         }
         if (Min != null)
         {
             hashCode = hashCode * 59 + Min.GetHashCode();
         }
         if (Max != null)
         {
             hashCode = hashCode * 59 + Max.GetHashCode();
         }
         if (Stepsize != null)
         {
             hashCode = hashCode * 59 + Stepsize.GetHashCode();
         }
         if (Pattern != null)
         {
             hashCode = hashCode * 59 + Pattern.GetHashCode();
         }
         if (ReadOnly != null)
         {
             hashCode = hashCode * 59 + ReadOnly.GetHashCode();
         }
         if (Multiple != null)
         {
             hashCode = hashCode * 59 + Multiple.GetHashCode();
         }
         if (MultipleLimit != null)
         {
             hashCode = hashCode * 59 + MultipleLimit.GetHashCode();
         }
         if (GroupName != null)
         {
             hashCode = hashCode * 59 + GroupName.GetHashCode();
         }
         if (Advanced != null)
         {
             hashCode = hashCode * 59 + Advanced.GetHashCode();
         }
         if (Verify != null)
         {
             hashCode = hashCode * 59 + Verify.GetHashCode();
         }
         if (LimitToOptions != null)
         {
             hashCode = hashCode * 59 + LimitToOptions.GetHashCode();
         }
         if (Unit != null)
         {
             hashCode = hashCode * 59 + Unit.GetHashCode();
         }
         if (UnitLabel != null)
         {
             hashCode = hashCode * 59 + UnitLabel.GetHashCode();
         }
         if (Options != null)
         {
             hashCode = hashCode * 59 + Options.GetHashCode();
         }
         if (FilterCriteria != null)
         {
             hashCode = hashCode * 59 + FilterCriteria.GetHashCode();
         }
         return(hashCode);
     }
 }
        /// <summary>
        /// Returns true if ConfigDescriptionParameterDTO instances are equal
        /// </summary>
        /// <param name="input">Instance of ConfigDescriptionParameterDTO to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(ConfigDescriptionParameterDTO input)
        {
            if (input == null)
            {
                return(false);
            }

            return
                ((
                     Context == input.Context ||
                     (Context != null &&
                      Context.Equals(input.Context))
                     ) &&
                 (
                     DefaultValue == input.DefaultValue ||
                     (DefaultValue != null &&
                      DefaultValue.Equals(input.DefaultValue))
                 ) &&
                 (
                     Description == input.Description ||
                     (Description != null &&
                      Description.Equals(input.Description))
                 ) &&
                 (
                     Label == input.Label ||
                     (Label != null &&
                      Label.Equals(input.Label))
                 ) &&
                 (
                     Name == input.Name ||
                     (Name != null &&
                      Name.Equals(input.Name))
                 ) &&
                 (
                     Required == input.Required ||
                     (Required != null &&
                      Required.Equals(input.Required))
                 ) &&
                 (
                     Type == input.Type ||
                     (Type != null &&
                      Type.Equals(input.Type))
                 ) &&
                 (
                     Min == input.Min ||
                     (Min != null &&
                      Min.Equals(input.Min))
                 ) &&
                 (
                     Max == input.Max ||
                     (Max != null &&
                      Max.Equals(input.Max))
                 ) &&
                 (
                     Stepsize == input.Stepsize ||
                     (Stepsize != null &&
                      Stepsize.Equals(input.Stepsize))
                 ) &&
                 (
                     Pattern == input.Pattern ||
                     (Pattern != null &&
                      Pattern.Equals(input.Pattern))
                 ) &&
                 (
                     ReadOnly == input.ReadOnly ||
                     (ReadOnly != null &&
                      ReadOnly.Equals(input.ReadOnly))
                 ) &&
                 (
                     Multiple == input.Multiple ||
                     (Multiple != null &&
                      Multiple.Equals(input.Multiple))
                 ) &&
                 (
                     MultipleLimit == input.MultipleLimit ||
                     (MultipleLimit != null &&
                      MultipleLimit.Equals(input.MultipleLimit))
                 ) &&
                 (
                     GroupName == input.GroupName ||
                     (GroupName != null &&
                      GroupName.Equals(input.GroupName))
                 ) &&
                 (
                     Advanced == input.Advanced ||
                     (Advanced != null &&
                      Advanced.Equals(input.Advanced))
                 ) &&
                 (
                     Verify == input.Verify ||
                     (Verify != null &&
                      Verify.Equals(input.Verify))
                 ) &&
                 (
                     LimitToOptions == input.LimitToOptions ||
                     (LimitToOptions != null &&
                      LimitToOptions.Equals(input.LimitToOptions))
                 ) &&
                 (
                     Unit == input.Unit ||
                     (Unit != null &&
                      Unit.Equals(input.Unit))
                 ) &&
                 (
                     UnitLabel == input.UnitLabel ||
                     (UnitLabel != null &&
                      UnitLabel.Equals(input.UnitLabel))
                 ) &&
                 (
                     Options == input.Options ||
                     Options != null &&
                     Options.SequenceEqual(input.Options)
                 ) &&
                 (
                     FilterCriteria == input.FilterCriteria ||
                     FilterCriteria != null &&
                     FilterCriteria.SequenceEqual(input.FilterCriteria)
                 ));
        }