/// <summary>
 /// Gets the hash code
 /// </summary>
 /// <returns>Hash code</returns>
 public override int GetHashCode()
 {
     unchecked // Overflow is fine, just wrap
     {
         int hashCode = 41;
         if (PassportId != null)
         {
             hashCode = hashCode * 59 + PassportId.GetHashCode();
         }
         hashCode = hashCode * 59 + PlanId.GetHashCode();
         if (OptionalLinkedSubscriptionId != null)
         {
             hashCode = hashCode * 59 + OptionalLinkedSubscriptionId.GetHashCode();
         }
         if (SubscriptionDate != null)
         {
             hashCode = hashCode * 59 + SubscriptionDate.GetHashCode();
         }
         if (ExpirationDate != null)
         {
             hashCode = hashCode * 59 + ExpirationDate.GetHashCode();
         }
         hashCode = hashCode * 59 + CurrentTokensUsed.GetHashCode();
         hashCode = hashCode * 59 + ExtraTokens.GetHashCode();
         if (ExtraTokensEndDate != null)
         {
             hashCode = hashCode * 59 + ExtraTokensEndDate.GetHashCode();
         }
         hashCode = hashCode * 59 + IsYearlyPaid.GetHashCode();
         hashCode = hashCode * 59 + IsActive.GetHashCode();
         hashCode = hashCode * 59 + TokensPercentUsageAlert.GetHashCode();
         hashCode = hashCode * 59 + TokensPercentUsageAlertSent.GetHashCode();
         hashCode = hashCode * 59 + IsManaged.GetHashCode();
         if (NextMonthlyTerm != null)
         {
             hashCode = hashCode * 59 + NextMonthlyTerm.GetHashCode();
         }
         hashCode = hashCode * 59 + RemainingTokens.GetHashCode();
         return(hashCode);
     }
 }
        /// <summary>
        /// Returns true if PassportPDFPassport instances are equal
        /// </summary>
        /// <param name="input">Instance of PassportPDFPassport to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(PassportPDFPassport input)
        {
            if (input == null)
            {
                return(false);
            }

            return
                ((
                     PassportId == input.PassportId ||
                     (PassportId != null &&
                      PassportId.Equals(input.PassportId))
                     ) &&
                 (
                     PlanId == input.PlanId ||
                     PlanId.Equals(input.PlanId)
                 ) &&
                 (
                     OptionalLinkedSubscriptionId == input.OptionalLinkedSubscriptionId ||
                     (OptionalLinkedSubscriptionId != null &&
                      OptionalLinkedSubscriptionId.Equals(input.OptionalLinkedSubscriptionId))
                 ) &&
                 (
                     SubscriptionDate == input.SubscriptionDate ||
                     (SubscriptionDate != null &&
                      SubscriptionDate.Equals(input.SubscriptionDate))
                 ) &&
                 (
                     ExpirationDate == input.ExpirationDate ||
                     (ExpirationDate != null &&
                      ExpirationDate.Equals(input.ExpirationDate))
                 ) &&
                 (
                     CurrentTokensUsed == input.CurrentTokensUsed ||
                     CurrentTokensUsed.Equals(input.CurrentTokensUsed)
                 ) &&
                 (
                     ExtraTokens == input.ExtraTokens ||
                     ExtraTokens.Equals(input.ExtraTokens)
                 ) &&
                 (
                     ExtraTokensEndDate == input.ExtraTokensEndDate ||
                     (ExtraTokensEndDate != null &&
                      ExtraTokensEndDate.Equals(input.ExtraTokensEndDate))
                 ) &&
                 (
                     IsYearlyPaid == input.IsYearlyPaid ||
                     IsYearlyPaid.Equals(input.IsYearlyPaid)
                 ) &&
                 (
                     IsActive == input.IsActive ||
                     IsActive.Equals(input.IsActive)
                 ) &&
                 (
                     TokensPercentUsageAlert == input.TokensPercentUsageAlert ||
                     TokensPercentUsageAlert.Equals(input.TokensPercentUsageAlert)
                 ) &&
                 (
                     TokensPercentUsageAlertSent == input.TokensPercentUsageAlertSent ||
                     TokensPercentUsageAlertSent.Equals(input.TokensPercentUsageAlertSent)
                 ) &&
                 (
                     IsManaged == input.IsManaged ||
                     IsManaged.Equals(input.IsManaged)
                 ) &&
                 (
                     NextMonthlyTerm == input.NextMonthlyTerm ||
                     (NextMonthlyTerm != null &&
                      NextMonthlyTerm.Equals(input.NextMonthlyTerm))
                 ) &&
                 (
                     RemainingTokens == input.RemainingTokens ||
                     RemainingTokens.Equals(input.RemainingTokens)
                 ));
        }