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

        unchecked {
            if (__isset.type)
            {
                hashcode = (hashcode * 397) + Type.GetHashCode();
            }
            if (__isset.dialedNumber)
            {
                hashcode = (hashcode * 397) + DialedNumber.GetHashCode();
            }
            if (__isset.serviceDomain)
            {
                hashcode = (hashcode * 397) + ServiceDomain.GetHashCode();
            }
            if (__isset.productType)
            {
                hashcode = (hashcode * 397) + ProductType.GetHashCode();
            }
            if (__isset.productName)
            {
                hashcode = (hashcode * 397) + ProductName.GetHashCode();
            }
            if (__isset.multipleProduct)
            {
                hashcode = (hashcode * 397) + MultipleProduct.GetHashCode();
            }
            if (__isset.callerIdStatus)
            {
                hashcode = (hashcode * 397) + CallerIdStatus.GetHashCode();
            }
            if (__isset.balance)
            {
                hashcode = (hashcode * 397) + Balance.GetHashCode();
            }
            if (__isset.unit)
            {
                hashcode = (hashcode * 397) + Unit.GetHashCode();
            }
            if (__isset.rate)
            {
                hashcode = (hashcode * 397) + Rate.GetHashCode();
            }
            if (__isset.displayCode)
            {
                hashcode = (hashcode * 397) + DisplayCode.GetHashCode();
            }
            if (__isset.calledNumber)
            {
                hashcode = (hashcode * 397) + CalledNumber.GetHashCode();
            }
            if (__isset.calleeNationalNumber)
            {
                hashcode = (hashcode * 397) + CalleeNationalNumber.GetHashCode();
            }
            if (__isset.calleeCallingCode)
            {
                hashcode = (hashcode * 397) + CalleeCallingCode.GetHashCode();
            }
            if (__isset.rateDivision)
            {
                hashcode = (hashcode * 397) + RateDivision.GetHashCode();
            }
            if (__isset.adMaxMin)
            {
                hashcode = (hashcode * 397) + AdMaxMin.GetHashCode();
            }
            if (__isset.adRemains)
            {
                hashcode = (hashcode * 397) + AdRemains.GetHashCode();
            }
            if (__isset.adSessionId)
            {
                hashcode = (hashcode * 397) + AdSessionId.GetHashCode();
            }
        }
        return(hashcode);
    }
    public override string ToString()
    {
        var  sb      = new StringBuilder("PaidCallDialing(");
        bool __first = true;

        if (__isset.type)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("Type: ");
            Type.ToString(sb);
        }
        if (DialedNumber != null && __isset.dialedNumber)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("DialedNumber: ");
            DialedNumber.ToString(sb);
        }
        if (ServiceDomain != null && __isset.serviceDomain)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("ServiceDomain: ");
            ServiceDomain.ToString(sb);
        }
        if (__isset.productType)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("ProductType: ");
            ProductType.ToString(sb);
        }
        if (ProductName != null && __isset.productName)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("ProductName: ");
            ProductName.ToString(sb);
        }
        if (__isset.multipleProduct)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("MultipleProduct: ");
            MultipleProduct.ToString(sb);
        }
        if (__isset.callerIdStatus)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("CallerIdStatus: ");
            CallerIdStatus.ToString(sb);
        }
        if (__isset.balance)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("Balance: ");
            Balance.ToString(sb);
        }
        if (Unit != null && __isset.unit)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("Unit: ");
            Unit.ToString(sb);
        }
        if (__isset.rate)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("Rate: ");
            Rate.ToString(sb);
        }
        if (DisplayCode != null && __isset.displayCode)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("DisplayCode: ");
            DisplayCode.ToString(sb);
        }
        if (CalledNumber != null && __isset.calledNumber)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("CalledNumber: ");
            CalledNumber.ToString(sb);
        }
        if (CalleeNationalNumber != null && __isset.calleeNationalNumber)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("CalleeNationalNumber: ");
            CalleeNationalNumber.ToString(sb);
        }
        if (CalleeCallingCode != null && __isset.calleeCallingCode)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("CalleeCallingCode: ");
            CalleeCallingCode.ToString(sb);
        }
        if (RateDivision != null && __isset.rateDivision)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("RateDivision: ");
            RateDivision.ToString(sb);
        }
        if (__isset.adMaxMin)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("AdMaxMin: ");
            AdMaxMin.ToString(sb);
        }
        if (__isset.adRemains)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("AdRemains: ");
            AdRemains.ToString(sb);
        }
        if (AdSessionId != null && __isset.adSessionId)
        {
            if (!__first)
            {
                sb.Append(", ");
            }
            __first = false;
            sb.Append("AdSessionId: ");
            AdSessionId.ToString(sb);
        }
        sb.Append(")");
        return(sb.ToString());
    }