/// <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 (UnitOfMeasure != null)
         {
             hashCode = hashCode * 59 + UnitOfMeasure.GetHashCode();
         }
         if (MinimumValue != null)
         {
             hashCode = hashCode * 59 + MinimumValue.GetHashCode();
         }
         if (MaximumValue != null)
         {
             hashCode = hashCode * 59 + MaximumValue.GetHashCode();
         }
         if (RateApplicationMethod != null)
         {
             hashCode = hashCode * 59 + RateApplicationMethod.GetHashCode();
         }
         if (ApplicabilityConditions != null)
         {
             hashCode = hashCode * 59 + ApplicabilityConditions.GetHashCode();
         }
         return(hashCode);
     }
 }
        /// <summary>
        /// Returns true if BankingProductRateTier instances are equal
        /// </summary>
        /// <param name="other">Instance of BankingProductRateTier to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(BankingProductRateTier other)
        {
            if (ReferenceEquals(null, other))
            {
                return(false);
            }
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return
                ((
                     Name == other.Name ||
                     Name != null &&
                     Name.Equals(other.Name)
                     ) &&
                 (
                     UnitOfMeasure == other.UnitOfMeasure ||
                     UnitOfMeasure != null &&
                     UnitOfMeasure.Equals(other.UnitOfMeasure)
                 ) &&
                 (
                     MinimumValue == other.MinimumValue ||
                     MinimumValue != null &&
                     MinimumValue.Equals(other.MinimumValue)
                 ) &&
                 (
                     MaximumValue == other.MaximumValue ||
                     MaximumValue != null &&
                     MaximumValue.Equals(other.MaximumValue)
                 ) &&
                 (
                     RateApplicationMethod == other.RateApplicationMethod ||
                     RateApplicationMethod != null &&
                     RateApplicationMethod.Equals(other.RateApplicationMethod)
                 ) &&
                 (
                     ApplicabilityConditions == other.ApplicabilityConditions ||
                     ApplicabilityConditions != null &&
                     ApplicabilityConditions.SequenceEqual(other.ApplicabilityConditions)
                 ) &&
                 (
                     SubTier == other.SubTier ||
                     SubTier != null &&
                     SubTier.Equals(other.SubTier)
                 ));
        }