/// <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 (TransactionId != null)
         {
             hashCode = hashCode * 59 + TransactionId.GetHashCode();
         }
         if (TransactionProcessingState != null)
         {
             hashCode = hashCode * 59 + TransactionProcessingState.GetHashCode();
         }
         if (InputFirstSeenTime != null)
         {
             hashCode = hashCode * 59 + InputFirstSeenTime.GetHashCode();
         }
         if (InputFullyConfirmedTime != null)
         {
             hashCode = hashCode * 59 + InputFullyConfirmedTime.GetHashCode();
         }
         if (InputNumberOfConfirmations != null)
         {
             hashCode = hashCode * 59 + InputNumberOfConfirmations.GetHashCode();
         }
         if (InputAmount != null)
         {
             hashCode = hashCode * 59 + InputAmount.GetHashCode();
         }
         if (InputTransactionHash != null)
         {
             hashCode = hashCode * 59 + InputTransactionHash.GetHashCode();
         }
         if (InputCoinType != null)
         {
             hashCode = hashCode * 59 + InputCoinType.GetHashCode();
         }
         if (InputWalletType != null)
         {
             hashCode = hashCode * 59 + InputWalletType.GetHashCode();
         }
         if (InputAddress != null)
         {
             hashCode = hashCode * 59 + InputAddress.GetHashCode();
         }
         if (PrimarySourceAddress != null)
         {
             hashCode = hashCode * 59 + PrimarySourceAddress.GetHashCode();
         }
         if (OutputInitiationTime != null)
         {
             hashCode = hashCode * 59 + OutputInitiationTime.GetHashCode();
         }
         if (OutputAmount != null)
         {
             hashCode = hashCode * 59 + OutputAmount.GetHashCode();
         }
         if (OutputTransactionHash != null)
         {
             hashCode = hashCode * 59 + OutputTransactionHash.GetHashCode();
         }
         if (OutputCoinType != null)
         {
             hashCode = hashCode * 59 + OutputCoinType.GetHashCode();
         }
         if (OutputWalletType != null)
         {
             hashCode = hashCode * 59 + OutputWalletType.GetHashCode();
         }
         if (OutputAddress != null)
         {
             hashCode = hashCode * 59 + OutputAddress.GetHashCode();
         }
         if (OutputMemo != null)
         {
             hashCode = hashCode * 59 + OutputMemo.GetHashCode();
         }
         if (OutputAddressNickname != null)
         {
             hashCode = hashCode * 59 + OutputAddressNickname.GetHashCode();
         }
         if (LastModifiedTime != null)
         {
             hashCode = hashCode * 59 + LastModifiedTime.GetHashCode();
         }
         if (RequiredNumberOfInputConfirmations != null)
         {
             hashCode = hashCode * 59 + RequiredNumberOfInputConfirmations.GetHashCode();
         }
         if (InputUsdEquivalent != null)
         {
             hashCode = hashCode * 59 + InputUsdEquivalent.GetHashCode();
         }
         if (DelegationId != null)
         {
             hashCode = hashCode * 59 + DelegationId.GetHashCode();
         }
         if (VestsDelegated != null)
         {
             hashCode = hashCode * 59 + VestsDelegated.GetHashCode();
         }
         if (SteemPowerDelegated != null)
         {
             hashCode = hashCode * 59 + SteemPowerDelegated.GetHashCode();
         }
         if (SteemPowerDelegatee != null)
         {
             hashCode = hashCode * 59 + SteemPowerDelegatee.GetHashCode();
         }
         if (DelegationExtensionDuration != null)
         {
             hashCode = hashCode * 59 + DelegationExtensionDuration.GetHashCode();
         }
         return(hashCode);
     }
 }
        /// <summary>
        /// Returns true if TransactionInfo instances are equal
        /// </summary>
        /// <param name="other">Instance of TransactionInfo to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(TransactionInfo other)
        {
            if (ReferenceEquals(null, other))
            {
                return(false);
            }
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return
                ((
                     TransactionId == other.TransactionId ||
                     TransactionId != null &&
                     TransactionId.Equals(other.TransactionId)
                     ) &&
                 (
                     TransactionProcessingState == other.TransactionProcessingState ||
                     TransactionProcessingState != null &&
                     TransactionProcessingState.Equals(other.TransactionProcessingState)
                 ) &&
                 (
                     InputFirstSeenTime == other.InputFirstSeenTime ||
                     InputFirstSeenTime != null &&
                     InputFirstSeenTime.Equals(other.InputFirstSeenTime)
                 ) &&
                 (
                     InputFullyConfirmedTime == other.InputFullyConfirmedTime ||
                     InputFullyConfirmedTime != null &&
                     InputFullyConfirmedTime.Equals(other.InputFullyConfirmedTime)
                 ) &&
                 (
                     InputNumberOfConfirmations == other.InputNumberOfConfirmations ||
                     InputNumberOfConfirmations != null &&
                     InputNumberOfConfirmations.Equals(other.InputNumberOfConfirmations)
                 ) &&
                 (
                     InputAmount == other.InputAmount ||
                     InputAmount != null &&
                     InputAmount.Equals(other.InputAmount)
                 ) &&
                 (
                     InputTransactionHash == other.InputTransactionHash ||
                     InputTransactionHash != null &&
                     InputTransactionHash.Equals(other.InputTransactionHash)
                 ) &&
                 (
                     InputCoinType == other.InputCoinType ||
                     InputCoinType != null &&
                     InputCoinType.Equals(other.InputCoinType)
                 ) &&
                 (
                     InputWalletType == other.InputWalletType ||
                     InputWalletType != null &&
                     InputWalletType.Equals(other.InputWalletType)
                 ) &&
                 (
                     InputAddress == other.InputAddress ||
                     InputAddress != null &&
                     InputAddress.Equals(other.InputAddress)
                 ) &&
                 (
                     PrimarySourceAddress == other.PrimarySourceAddress ||
                     PrimarySourceAddress != null &&
                     PrimarySourceAddress.Equals(other.PrimarySourceAddress)
                 ) &&
                 (
                     OutputInitiationTime == other.OutputInitiationTime ||
                     OutputInitiationTime != null &&
                     OutputInitiationTime.Equals(other.OutputInitiationTime)
                 ) &&
                 (
                     OutputAmount == other.OutputAmount ||
                     OutputAmount != null &&
                     OutputAmount.Equals(other.OutputAmount)
                 ) &&
                 (
                     OutputTransactionHash == other.OutputTransactionHash ||
                     OutputTransactionHash != null &&
                     OutputTransactionHash.Equals(other.OutputTransactionHash)
                 ) &&
                 (
                     OutputCoinType == other.OutputCoinType ||
                     OutputCoinType != null &&
                     OutputCoinType.Equals(other.OutputCoinType)
                 ) &&
                 (
                     OutputWalletType == other.OutputWalletType ||
                     OutputWalletType != null &&
                     OutputWalletType.Equals(other.OutputWalletType)
                 ) &&
                 (
                     OutputAddress == other.OutputAddress ||
                     OutputAddress != null &&
                     OutputAddress.Equals(other.OutputAddress)
                 ) &&
                 (
                     OutputMemo == other.OutputMemo ||
                     OutputMemo != null &&
                     OutputMemo.Equals(other.OutputMemo)
                 ) &&
                 (
                     OutputAddressNickname == other.OutputAddressNickname ||
                     OutputAddressNickname != null &&
                     OutputAddressNickname.Equals(other.OutputAddressNickname)
                 ) &&
                 (
                     LastModifiedTime == other.LastModifiedTime ||
                     LastModifiedTime != null &&
                     LastModifiedTime.Equals(other.LastModifiedTime)
                 ) &&
                 (
                     RequiredNumberOfInputConfirmations == other.RequiredNumberOfInputConfirmations ||
                     RequiredNumberOfInputConfirmations != null &&
                     RequiredNumberOfInputConfirmations.Equals(other.RequiredNumberOfInputConfirmations)
                 ) &&
                 (
                     InputUsdEquivalent == other.InputUsdEquivalent ||
                     InputUsdEquivalent != null &&
                     InputUsdEquivalent.Equals(other.InputUsdEquivalent)
                 ) &&
                 (
                     DelegationId == other.DelegationId ||
                     DelegationId != null &&
                     DelegationId.Equals(other.DelegationId)
                 ) &&
                 (
                     VestsDelegated == other.VestsDelegated ||
                     VestsDelegated != null &&
                     VestsDelegated.Equals(other.VestsDelegated)
                 ) &&
                 (
                     SteemPowerDelegated == other.SteemPowerDelegated ||
                     SteemPowerDelegated != null &&
                     SteemPowerDelegated.Equals(other.SteemPowerDelegated)
                 ) &&
                 (
                     SteemPowerDelegatee == other.SteemPowerDelegatee ||
                     SteemPowerDelegatee != null &&
                     SteemPowerDelegatee.Equals(other.SteemPowerDelegatee)
                 ) &&
                 (
                     DelegationExtensionDuration == other.DelegationExtensionDuration ||
                     DelegationExtensionDuration != null &&
                     DelegationExtensionDuration.Equals(other.DelegationExtensionDuration)
                 ));
        }