public override int GetHashCode()
    {
        int hashcode = 157;

        unchecked {
            if (__isset.productId)
            {
                hashcode = (hashcode * 397) + ProductId.GetHashCode();
            }
            if (__isset.country)
            {
                hashcode = (hashcode * 397) + Country.GetHashCode();
            }
            if (__isset.currency)
            {
                hashcode = (hashcode * 397) + Currency.GetHashCode();
            }
            if (__isset.price)
            {
                hashcode = (hashcode * 397) + Price.GetHashCode();
            }
            if (__isset.appStoreCode)
            {
                hashcode = (hashcode * 397) + AppStoreCode.GetHashCode();
            }
            if (__isset.language)
            {
                hashcode = (hashcode * 397) + Language.GetHashCode();
            }
            if (__isset.pgCode)
            {
                hashcode = (hashcode * 397) + PgCode.GetHashCode();
            }
            if (__isset.redirectUrl)
            {
                hashcode = (hashcode * 397) + RedirectUrl.GetHashCode();
            }
        }
        return(hashcode);
    }
    public override string ToString()
    {
        var  sb      = new StringBuilder("CoinPurchaseReservation(");
        bool __first = true;

        if (ProductId != null && __isset.productId)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("ProductId: ");
            ProductId.ToString(sb);
        }
        if (Country != null && __isset.country)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("Country: ");
            Country.ToString(sb);
        }
        if (Currency != null && __isset.currency)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("Currency: ");
            Currency.ToString(sb);
        }
        if (Price != null && __isset.price)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("Price: ");
            Price.ToString(sb);
        }
        if (__isset.appStoreCode)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("AppStoreCode: ");
            AppStoreCode.ToString(sb);
        }
        if (Language != null && __isset.language)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("Language: ");
            Language.ToString(sb);
        }
        if (__isset.pgCode)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("PgCode: ");
            PgCode.ToString(sb);
        }
        if (RedirectUrl != null && __isset.redirectUrl)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("RedirectUrl: ");
            RedirectUrl.ToString(sb);
        }
        sb.Append(")");
        return(sb.ToString());
    }