// File generated from our OpenAPI spec by Stainless.

package com.increase.api.models.carddisputes

import com.fasterxml.jackson.module.kotlin.jacksonTypeRef
import com.increase.api.core.jsonMapper
import java.time.LocalDate
import java.time.OffsetDateTime
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test

internal class CardDisputeTest {

    @Test
    fun create() {
        val cardDispute =
            CardDispute.builder()
                .id("card_dispute_h9sc95nbl1cgltpp7men")
                .amount(1000L)
                .cardId("card_oubs0hwk5rn6knuecxg2")
                .createdAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                .disputedTransactionId("transaction_uyrp7fld2ium70oa7oi")
                .idempotencyKey(null)
                .loss(
                    CardDispute.Loss.builder()
                        .lostAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                        .reason(CardDispute.Loss.Reason.USER_WITHDRAWN)
                        .build()
                )
                .network(CardDispute.Network.VISA)
                .rejection(
                    CardDispute.Rejection.builder()
                        .explanation("Card Dispute is not allowed per network rules.")
                        .rejectedAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                        .build()
                )
                .status(CardDispute.Status.PENDING_RESPONSE)
                .type(CardDispute.Type.CARD_DISPUTE)
                .userSubmissionRequiredBy(null)
                .visa(
                    CardDispute.Visa.builder()
                        .addNetworkEvent(
                            CardDispute.Visa.NetworkEvent.builder()
                                .addAttachmentFile(
                                    CardDispute.Visa.NetworkEvent.AttachmentFile.builder()
                                        .fileId("file_id")
                                        .build()
                                )
                                .category(
                                    CardDispute.Visa.NetworkEvent.Category.CHARGEBACK_ACCEPTED
                                )
                                .createdAt(OffsetDateTime.parse("2019-12-27T18:11:19.117Z"))
                                .disputeFinancialTransactionId("dispute_financial_transaction_id")
                                .chargebackAccepted(
                                    CardDispute.Visa.NetworkEvent.ChargebackAccepted.builder()
                                        .build()
                                )
                                .chargebackSubmitted(
                                    CardDispute.Visa.NetworkEvent.ChargebackSubmitted.builder()
                                        .build()
                                )
                                .chargebackTimedOut(
                                    CardDispute.Visa.NetworkEvent.ChargebackTimedOut.builder()
                                        .build()
                                )
                                .merchantPrearbitrationDeclineSubmitted(
                                    CardDispute.Visa.NetworkEvent
                                        .MerchantPrearbitrationDeclineSubmitted
                                        .builder()
                                        .build()
                                )
                                .merchantPrearbitrationReceived(
                                    CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                        .builder()
                                        .cardholderNoLongerDisputes(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .CardholderNoLongerDisputes
                                                .builder()
                                                .explanation(
                                                    "See the attached email where the cardholder confirmed that they no longer dispute the transaction."
                                                )
                                                .build()
                                        )
                                        .compellingEvidence(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .CompellingEvidence
                                                .builder()
                                                .category(
                                                    CardDispute.Visa.NetworkEvent
                                                        .MerchantPrearbitrationReceived
                                                        .CompellingEvidence
                                                        .Category
                                                        .MERCHANDISE_USE
                                                )
                                                .explanation(null)
                                                .build()
                                        )
                                        .creditOrReversalProcessed(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .CreditOrReversalProcessed
                                                .builder()
                                                .amount(4900L)
                                                .currency("USD")
                                                .explanation(
                                                    "The user did not provide the required documentation."
                                                )
                                                .processedAt(LocalDate.parse("2020-01-31"))
                                                .build()
                                        )
                                        .delayedChargeTransaction(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .DelayedChargeTransaction
                                                .builder()
                                                .explanation(null)
                                                .build()
                                        )
                                        .evidenceOfImprint(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .EvidenceOfImprint
                                                .builder()
                                                .explanation(null)
                                                .build()
                                        )
                                        .invalidDispute(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .InvalidDispute
                                                .builder()
                                                .explanation(
                                                    "The user did not provide the required documentation."
                                                )
                                                .reason(
                                                    CardDispute.Visa.NetworkEvent
                                                        .MerchantPrearbitrationReceived
                                                        .InvalidDispute
                                                        .Reason
                                                        .OTHER
                                                )
                                                .build()
                                        )
                                        .nonFiatCurrencyOrNonFungibleTokenReceived(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .NonFiatCurrencyOrNonFungibleTokenReceived
                                                .builder()
                                                .blockchainTransactionHash(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .destinationWalletAddress(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .priorApprovedTransactions(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .build()
                                        )
                                        .priorUndisputedNonFraudTransactions(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .PriorUndisputedNonFraudTransactions
                                                .builder()
                                                .explanation(null)
                                                .build()
                                        )
                                        .reason(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .Reason
                                                .CARDHOLDER_NO_LONGER_DISPUTES
                                        )
                                        .build()
                                )
                                .merchantPrearbitrationTimedOut(
                                    CardDispute.Visa.NetworkEvent.MerchantPrearbitrationTimedOut
                                        .builder()
                                        .build()
                                )
                                .represented(
                                    CardDispute.Visa.NetworkEvent.Represented.builder()
                                        .cardholderNoLongerDisputes(
                                            CardDispute.Visa.NetworkEvent.Represented
                                                .CardholderNoLongerDisputes
                                                .builder()
                                                .explanation(
                                                    "See the attached email where the cardholder confirmed that they no longer dispute the transaction."
                                                )
                                                .build()
                                        )
                                        .creditOrReversalProcessed(
                                            CardDispute.Visa.NetworkEvent.Represented
                                                .CreditOrReversalProcessed
                                                .builder()
                                                .amount(4900L)
                                                .currency("USD")
                                                .explanation(
                                                    "The user did not provide the required documentation."
                                                )
                                                .processedAt(LocalDate.parse("2020-01-31"))
                                                .build()
                                        )
                                        .invalidDispute(
                                            CardDispute.Visa.NetworkEvent.Represented.InvalidDispute
                                                .builder()
                                                .explanation(
                                                    "The user did not provide the required documentation."
                                                )
                                                .reason(
                                                    CardDispute.Visa.NetworkEvent.Represented
                                                        .InvalidDispute
                                                        .Reason
                                                        .OTHER
                                                )
                                                .build()
                                        )
                                        .nonFiatCurrencyOrNonFungibleTokenAsDescribed(
                                            CardDispute.Visa.NetworkEvent.Represented
                                                .NonFiatCurrencyOrNonFungibleTokenAsDescribed
                                                .builder()
                                                .build()
                                        )
                                        .nonFiatCurrencyOrNonFungibleTokenReceived(
                                            CardDispute.Visa.NetworkEvent.Represented
                                                .NonFiatCurrencyOrNonFungibleTokenReceived
                                                .builder()
                                                .blockchainTransactionHash(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .destinationWalletAddress(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .priorApprovedTransactions(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .build()
                                        )
                                        .proofOfCashDisbursement(
                                            CardDispute.Visa.NetworkEvent.Represented
                                                .ProofOfCashDisbursement
                                                .builder()
                                                .explanation(null)
                                                .build()
                                        )
                                        .reason(
                                            CardDispute.Visa.NetworkEvent.Represented.Reason
                                                .INVALID_DISPUTE
                                        )
                                        .reversalIssued(
                                            CardDispute.Visa.NetworkEvent.Represented.ReversalIssued
                                                .builder()
                                                .explanation(
                                                    "The merchant has issued a reversal for the transaction prior to the dispute being filed."
                                                )
                                                .build()
                                        )
                                        .build()
                                )
                                .representmentTimedOut(
                                    CardDispute.Visa.NetworkEvent.RepresentmentTimedOut.builder()
                                        .build()
                                )
                                .userPrearbitrationAccepted(
                                    CardDispute.Visa.NetworkEvent.UserPrearbitrationAccepted
                                        .builder()
                                        .build()
                                )
                                .userPrearbitrationDeclined(
                                    CardDispute.Visa.NetworkEvent.UserPrearbitrationDeclined
                                        .builder()
                                        .build()
                                )
                                .userPrearbitrationSubmitted(
                                    CardDispute.Visa.NetworkEvent.UserPrearbitrationSubmitted
                                        .builder()
                                        .build()
                                )
                                .userPrearbitrationTimedOut(
                                    CardDispute.Visa.NetworkEvent.UserPrearbitrationTimedOut
                                        .builder()
                                        .build()
                                )
                                .userWithdrawalSubmitted(
                                    CardDispute.Visa.NetworkEvent.UserWithdrawalSubmitted.builder()
                                        .build()
                                )
                                .build()
                        )
                        .requiredUserSubmissionCategory(null)
                        .addUserSubmission(
                            CardDispute.Visa.UserSubmission.builder()
                                .acceptedAt(null)
                                .amount(1000L)
                                .addAttachmentFile(
                                    CardDispute.Visa.UserSubmission.AttachmentFile.builder()
                                        .fileId("file_id")
                                        .build()
                                )
                                .category(CardDispute.Visa.UserSubmission.Category.CHARGEBACK)
                                .createdAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                                .explanation(null)
                                .furtherInformationRequestedAt(null)
                                .furtherInformationRequestedReason(null)
                                .status(CardDispute.Visa.UserSubmission.Status.PENDING_REVIEWING)
                                .updatedAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                                .chargeback(
                                    CardDispute.Visa.UserSubmission.Chargeback.builder()
                                        .authorization(
                                            CardDispute.Visa.UserSubmission.Chargeback.Authorization
                                                .builder()
                                                .accountStatus(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .Authorization
                                                        .AccountStatus
                                                        .ACCOUNT_CLOSED
                                                )
                                                .build()
                                        )
                                        .category(
                                            CardDispute.Visa.UserSubmission.Chargeback.Category
                                                .FRAUD
                                        )
                                        .consumerCanceledMerchandise(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerCanceledMerchandise
                                                .builder()
                                                .cardholderCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .CardholderCancellation
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .canceledPriorToShipDate(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledMerchandise
                                                                .CardholderCancellation
                                                                .CanceledPriorToShipDate
                                                                .CANCELED_PRIOR_TO_SHIP_DATE
                                                        )
                                                        .cancellationPolicyProvided(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledMerchandise
                                                                .CardholderCancellation
                                                                .CancellationPolicyProvided
                                                                .NOT_PROVIDED
                                                        )
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .notReturned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .NotReturned
                                                        .builder()
                                                        .build()
                                                )
                                                .purchaseExplanation("purchase_explanation")
                                                .receivedOrExpectedAt(LocalDate.parse("2019-12-27"))
                                                .returnAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .ReturnAttempted
                                                        .builder()
                                                        .attemptExplanation("attempt_explanation")
                                                        .attemptReason(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledMerchandise
                                                                .ReturnAttempted
                                                                .AttemptReason
                                                                .MERCHANT_NOT_RESPONDING
                                                        )
                                                        .attemptedAt(LocalDate.parse("2019-12-27"))
                                                        .merchandiseDisposition(
                                                            "merchandise_disposition"
                                                        )
                                                        .build()
                                                )
                                                .returnOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .ReturnOutcome
                                                        .NOT_RETURNED
                                                )
                                                .returned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .Returned
                                                        .builder()
                                                        .merchantReceivedReturnAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .otherExplanation("other_explanation")
                                                        .returnMethod(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledMerchandise
                                                                .Returned
                                                                .ReturnMethod
                                                                .DHL
                                                        )
                                                        .returnedAt(LocalDate.parse("2019-12-27"))
                                                        .trackingNumber("tracking_number")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerCanceledRecurringTransaction(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerCanceledRecurringTransaction
                                                .builder()
                                                .cancellationTarget(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledRecurringTransaction
                                                        .CancellationTarget
                                                        .ACCOUNT
                                                )
                                                .merchantContactMethods(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledRecurringTransaction
                                                        .MerchantContactMethods
                                                        .builder()
                                                        .applicationName("application_name")
                                                        .callCenterPhoneNumber(
                                                            "call_center_phone_number"
                                                        )
                                                        .emailAddress("email_address")
                                                        .inPersonAddress("in_person_address")
                                                        .mailingAddress("mailing_address")
                                                        .textPhoneNumber("text_phone_number")
                                                        .build()
                                                )
                                                .otherFormOfPaymentExplanation(
                                                    "other_form_of_payment_explanation"
                                                )
                                                .transactionOrAccountCanceledAt(
                                                    LocalDate.parse("2019-12-27")
                                                )
                                                .build()
                                        )
                                        .consumerCanceledServices(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerCanceledServices
                                                .builder()
                                                .cardholderCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .CardholderCancellation
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .cancellationPolicyProvided(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledServices
                                                                .CardholderCancellation
                                                                .CancellationPolicyProvided
                                                                .NOT_PROVIDED
                                                        )
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .contractedAt(LocalDate.parse("2019-12-27"))
                                                .guaranteedReservation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .GuaranteedReservation
                                                        .builder()
                                                        .explanation(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledServices
                                                                .GuaranteedReservation
                                                                .Explanation
                                                                .CARDHOLDER_CANCELED_PRIOR_TO_SERVICE
                                                        )
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .other(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .Other
                                                        .builder()
                                                        .build()
                                                )
                                                .purchaseExplanation("purchase_explanation")
                                                .serviceType(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .ServiceType
                                                        .GUARANTEED_RESERVATION
                                                )
                                                .timeshare(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .Timeshare
                                                        .builder()
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerCounterfeitMerchandise(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerCounterfeitMerchandise
                                                .builder()
                                                .counterfeitExplanation("counterfeit_explanation")
                                                .dispositionExplanation("disposition_explanation")
                                                .orderExplanation("order_explanation")
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .build()
                                        )
                                        .consumerCreditNotProcessed(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerCreditNotProcessed
                                                .builder()
                                                .canceledOrReturnedAt(LocalDate.parse("2019-12-27"))
                                                .creditExpectedAt(LocalDate.parse("2019-12-27"))
                                                .build()
                                        )
                                        .consumerDamagedOrDefectiveMerchandise(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerDamagedOrDefectiveMerchandise
                                                .builder()
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerDamagedOrDefectiveMerchandise
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .notReturned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerDamagedOrDefectiveMerchandise
                                                        .NotReturned
                                                        .builder()
                                                        .build()
                                                )
                                                .orderAndIssueExplanation(
                                                    "order_and_issue_explanation"
                                                )
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .returnAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerDamagedOrDefectiveMerchandise
                                                        .ReturnAttempted
                                                        .builder()
                                                        .attemptExplanation("attempt_explanation")
                                                        .attemptReason(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerDamagedOrDefectiveMerchandise
                                                                .ReturnAttempted
                                                                .AttemptReason
                                                                .MERCHANT_NOT_RESPONDING
                                                        )
                                                        .attemptedAt(LocalDate.parse("2019-12-27"))
                                                        .merchandiseDisposition(
                                                            "merchandise_disposition"
                                                        )
                                                        .build()
                                                )
                                                .returnOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerDamagedOrDefectiveMerchandise
                                                        .ReturnOutcome
                                                        .NOT_RETURNED
                                                )
                                                .returned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerDamagedOrDefectiveMerchandise
                                                        .Returned
                                                        .builder()
                                                        .merchantReceivedReturnAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .otherExplanation("other_explanation")
                                                        .returnMethod(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerDamagedOrDefectiveMerchandise
                                                                .Returned
                                                                .ReturnMethod
                                                                .DHL
                                                        )
                                                        .returnedAt(LocalDate.parse("2019-12-27"))
                                                        .trackingNumber("tracking_number")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerMerchandiseMisrepresentation(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerMerchandiseMisrepresentation
                                                .builder()
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseMisrepresentation
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .misrepresentationExplanation(
                                                    "misrepresentation_explanation"
                                                )
                                                .notReturned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseMisrepresentation
                                                        .NotReturned
                                                        .builder()
                                                        .build()
                                                )
                                                .purchaseExplanation("purchase_explanation")
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .returnAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseMisrepresentation
                                                        .ReturnAttempted
                                                        .builder()
                                                        .attemptExplanation("attempt_explanation")
                                                        .attemptReason(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseMisrepresentation
                                                                .ReturnAttempted
                                                                .AttemptReason
                                                                .MERCHANT_NOT_RESPONDING
                                                        )
                                                        .attemptedAt(LocalDate.parse("2019-12-27"))
                                                        .merchandiseDisposition(
                                                            "merchandise_disposition"
                                                        )
                                                        .build()
                                                )
                                                .returnOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseMisrepresentation
                                                        .ReturnOutcome
                                                        .NOT_RETURNED
                                                )
                                                .returned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseMisrepresentation
                                                        .Returned
                                                        .builder()
                                                        .merchantReceivedReturnAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .otherExplanation("other_explanation")
                                                        .returnMethod(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseMisrepresentation
                                                                .Returned
                                                                .ReturnMethod
                                                                .DHL
                                                        )
                                                        .returnedAt(LocalDate.parse("2019-12-27"))
                                                        .trackingNumber("tracking_number")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerMerchandiseNotAsDescribed(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerMerchandiseNotAsDescribed
                                                .builder()
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotAsDescribed
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .returnAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotAsDescribed
                                                        .ReturnAttempted
                                                        .builder()
                                                        .attemptExplanation("attempt_explanation")
                                                        .attemptReason(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotAsDescribed
                                                                .ReturnAttempted
                                                                .AttemptReason
                                                                .MERCHANT_NOT_RESPONDING
                                                        )
                                                        .attemptedAt(LocalDate.parse("2019-12-27"))
                                                        .merchandiseDisposition(
                                                            "merchandise_disposition"
                                                        )
                                                        .build()
                                                )
                                                .returnOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotAsDescribed
                                                        .ReturnOutcome
                                                        .RETURNED
                                                )
                                                .returned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotAsDescribed
                                                        .Returned
                                                        .builder()
                                                        .merchantReceivedReturnAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .otherExplanation("other_explanation")
                                                        .returnMethod(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotAsDescribed
                                                                .Returned
                                                                .ReturnMethod
                                                                .DHL
                                                        )
                                                        .returnedAt(LocalDate.parse("2019-12-27"))
                                                        .trackingNumber("tracking_number")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerMerchandiseNotReceived(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerMerchandiseNotReceived
                                                .builder()
                                                .cancellationOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .CancellationOutcome
                                                        .CARDHOLDER_CANCELLATION_PRIOR_TO_EXPECTED_RECEIPT
                                                )
                                                .cardholderCancellationPriorToExpectedReceipt(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .CardholderCancellationPriorToExpectedReceipt
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .delayed(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .Delayed
                                                        .builder()
                                                        .explanation("explanation")
                                                        .notReturned(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotReceived
                                                                .Delayed
                                                                .NotReturned
                                                                .builder()
                                                                .build()
                                                        )
                                                        .returnAttempted(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotReceived
                                                                .Delayed
                                                                .ReturnAttempted
                                                                .builder()
                                                                .attemptedAt(
                                                                    LocalDate.parse("2019-12-27")
                                                                )
                                                                .build()
                                                        )
                                                        .returnOutcome(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotReceived
                                                                .Delayed
                                                                .ReturnOutcome
                                                                .NOT_RETURNED
                                                        )
                                                        .returned(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotReceived
                                                                .Delayed
                                                                .Returned
                                                                .builder()
                                                                .merchantReceivedReturnAt(
                                                                    LocalDate.parse("2019-12-27")
                                                                )
                                                                .returnedAt(
                                                                    LocalDate.parse("2019-12-27")
                                                                )
                                                                .build()
                                                        )
                                                        .build()
                                                )
                                                .deliveredToWrongLocation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .DeliveredToWrongLocation
                                                        .builder()
                                                        .agreedLocation("agreed_location")
                                                        .build()
                                                )
                                                .deliveryIssue(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .DeliveryIssue
                                                        .DELAYED
                                                )
                                                .lastExpectedReceiptAt(
                                                    LocalDate.parse("2019-12-27")
                                                )
                                                .merchantCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .MerchantCancellation
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .noCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .NoCancellation
                                                        .builder()
                                                        .build()
                                                )
                                                .purchaseInfoAndExplanation(
                                                    "purchase_info_and_explanation"
                                                )
                                                .build()
                                        )
                                        .consumerNonReceiptOfCash(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerNonReceiptOfCash
                                                .builder()
                                                .build()
                                        )
                                        .consumerOriginalCreditTransactionNotAccepted(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerOriginalCreditTransactionNotAccepted
                                                .builder()
                                                .explanation("explanation")
                                                .reason(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerOriginalCreditTransactionNotAccepted
                                                        .Reason
                                                        .PROHIBITED_BY_LOCAL_LAWS_OR_REGULATION
                                                )
                                                .build()
                                        )
                                        .consumerQualityMerchandise(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerQualityMerchandise
                                                .builder()
                                                .expectedAt(LocalDate.parse("2019-12-27"))
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .notReturned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .NotReturned
                                                        .builder()
                                                        .build()
                                                )
                                                .ongoingNegotiations(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .OngoingNegotiations
                                                        .builder()
                                                        .explanation("explanation")
                                                        .issuerFirstNotifiedAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .startedAt(LocalDate.parse("2019-12-27"))
                                                        .build()
                                                )
                                                .purchaseInfoAndQualityIssue(
                                                    "purchase_info_and_quality_issue"
                                                )
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .returnAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .ReturnAttempted
                                                        .builder()
                                                        .attemptExplanation("attempt_explanation")
                                                        .attemptReason(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerQualityMerchandise
                                                                .ReturnAttempted
                                                                .AttemptReason
                                                                .MERCHANT_NOT_RESPONDING
                                                        )
                                                        .attemptedAt(LocalDate.parse("2019-12-27"))
                                                        .merchandiseDisposition(
                                                            "merchandise_disposition"
                                                        )
                                                        .build()
                                                )
                                                .returnOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .ReturnOutcome
                                                        .NOT_RETURNED
                                                )
                                                .returned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .Returned
                                                        .builder()
                                                        .merchantReceivedReturnAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .otherExplanation("other_explanation")
                                                        .returnMethod(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerQualityMerchandise
                                                                .Returned
                                                                .ReturnMethod
                                                                .DHL
                                                        )
                                                        .returnedAt(LocalDate.parse("2019-12-27"))
                                                        .trackingNumber("tracking_number")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerQualityServices(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerQualityServices
                                                .builder()
                                                .cardholderCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityServices
                                                        .CardholderCancellation
                                                        .builder()
                                                        .acceptedByMerchant(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerQualityServices
                                                                .CardholderCancellation
                                                                .AcceptedByMerchant
                                                                .ACCEPTED
                                                        )
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .cardholderPaidToHaveWorkRedone(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityServices
                                                        .CardholderPaidToHaveWorkRedone
                                                        .DID_NOT_PAY_TO_HAVE_WORK_REDONE
                                                )
                                                .nonFiatCurrencyOrNonFungibleTokenRelatedAndNotMatchingDescription(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityServices
                                                        .NonFiatCurrencyOrNonFungibleTokenRelatedAndNotMatchingDescription
                                                        .NOT_RELATED
                                                )
                                                .ongoingNegotiations(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityServices
                                                        .OngoingNegotiations
                                                        .builder()
                                                        .explanation("explanation")
                                                        .issuerFirstNotifiedAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .startedAt(LocalDate.parse("2019-12-27"))
                                                        .build()
                                                )
                                                .purchaseInfoAndQualityIssue(
                                                    "purchase_info_and_quality_issue"
                                                )
                                                .restaurantFoodRelated(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityServices
                                                        .RestaurantFoodRelated
                                                        .NOT_RELATED
                                                )
                                                .servicesReceivedAt(LocalDate.parse("2019-12-27"))
                                                .build()
                                        )
                                        .consumerServicesMisrepresentation(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerServicesMisrepresentation
                                                .builder()
                                                .cardholderCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesMisrepresentation
                                                        .CardholderCancellation
                                                        .builder()
                                                        .acceptedByMerchant(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerServicesMisrepresentation
                                                                .CardholderCancellation
                                                                .AcceptedByMerchant
                                                                .ACCEPTED
                                                        )
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesMisrepresentation
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .misrepresentationExplanation(
                                                    "misrepresentation_explanation"
                                                )
                                                .purchaseExplanation("purchase_explanation")
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .build()
                                        )
                                        .consumerServicesNotAsDescribed(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerServicesNotAsDescribed
                                                .builder()
                                                .cardholderCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotAsDescribed
                                                        .CardholderCancellation
                                                        .builder()
                                                        .acceptedByMerchant(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerServicesNotAsDescribed
                                                                .CardholderCancellation
                                                                .AcceptedByMerchant
                                                                .ACCEPTED
                                                        )
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .explanation("explanation")
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotAsDescribed
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .build()
                                        )
                                        .consumerServicesNotReceived(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerServicesNotReceived
                                                .builder()
                                                .cancellationOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotReceived
                                                        .CancellationOutcome
                                                        .CARDHOLDER_CANCELLATION_PRIOR_TO_EXPECTED_RECEIPT
                                                )
                                                .cardholderCancellationPriorToExpectedReceipt(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotReceived
                                                        .CardholderCancellationPriorToExpectedReceipt
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .lastExpectedReceiptAt(
                                                    LocalDate.parse("2019-12-27")
                                                )
                                                .merchantCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotReceived
                                                        .MerchantCancellation
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotReceived
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .noCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotReceived
                                                        .NoCancellation
                                                        .builder()
                                                        .build()
                                                )
                                                .purchaseInfoAndExplanation(
                                                    "purchase_info_and_explanation"
                                                )
                                                .build()
                                        )
                                        .fraud(
                                            CardDispute.Visa.UserSubmission.Chargeback.Fraud
                                                .builder()
                                                .fraudType(
                                                    CardDispute.Visa.UserSubmission.Chargeback.Fraud
                                                        .FraudType
                                                        .LOST
                                                )
                                                .build()
                                        )
                                        .processingError(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ProcessingError
                                                .builder()
                                                .duplicateTransaction(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ProcessingError
                                                        .DuplicateTransaction
                                                        .builder()
                                                        .otherTransactionId("other_transaction_id")
                                                        .build()
                                                )
                                                .errorReason(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ProcessingError
                                                        .ErrorReason
                                                        .DUPLICATE_TRANSACTION
                                                )
                                                .incorrectAmount(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ProcessingError
                                                        .IncorrectAmount
                                                        .builder()
                                                        .expectedAmount(0L)
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ProcessingError
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .paidByOtherMeans(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ProcessingError
                                                        .PaidByOtherMeans
                                                        .builder()
                                                        .otherFormOfPaymentEvidence(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ProcessingError
                                                                .PaidByOtherMeans
                                                                .OtherFormOfPaymentEvidence
                                                                .CANCELED_CHECK
                                                        )
                                                        .otherTransactionId("other_transaction_id")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .build()
                                )
                                .merchantPrearbitrationDecline(
                                    CardDispute.Visa.UserSubmission.MerchantPrearbitrationDecline
                                        .builder()
                                        .reason(
                                            "I do not believe the explanation given by the merchant is valid."
                                        )
                                        .build()
                                )
                                .userPrearbitration(
                                    CardDispute.Visa.UserSubmission.UserPrearbitration.builder()
                                        .categoryChange(
                                            CardDispute.Visa.UserSubmission.UserPrearbitration
                                                .CategoryChange
                                                .builder()
                                                .category(
                                                    CardDispute.Visa.UserSubmission
                                                        .UserPrearbitration
                                                        .CategoryChange
                                                        .Category
                                                        .FRAUD
                                                )
                                                .reason("Based on the response from the merchant.")
                                                .build()
                                        )
                                        .reason(
                                            "I disagree with the explanation given by the merchant."
                                        )
                                        .build()
                                )
                                .build()
                        )
                        .build()
                )
                .win(
                    CardDispute.Win.builder()
                        .wonAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                        .build()
                )
                .withdrawal(
                    CardDispute.Withdrawal.builder()
                        .explanation("The cardholder requested a withdrawal of the dispute.")
                        .build()
                )
                .build()

        assertThat(cardDispute.id()).isEqualTo("card_dispute_h9sc95nbl1cgltpp7men")
        assertThat(cardDispute.amount()).isEqualTo(1000L)
        assertThat(cardDispute.cardId()).isEqualTo("card_oubs0hwk5rn6knuecxg2")
        assertThat(cardDispute.createdAt()).isEqualTo(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
        assertThat(cardDispute.disputedTransactionId()).isEqualTo("transaction_uyrp7fld2ium70oa7oi")
        assertThat(cardDispute.idempotencyKey()).isEmpty
        assertThat(cardDispute.loss())
            .contains(
                CardDispute.Loss.builder()
                    .lostAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                    .reason(CardDispute.Loss.Reason.USER_WITHDRAWN)
                    .build()
            )
        assertThat(cardDispute.network()).isEqualTo(CardDispute.Network.VISA)
        assertThat(cardDispute.rejection())
            .contains(
                CardDispute.Rejection.builder()
                    .explanation("Card Dispute is not allowed per network rules.")
                    .rejectedAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                    .build()
            )
        assertThat(cardDispute.status()).isEqualTo(CardDispute.Status.PENDING_RESPONSE)
        assertThat(cardDispute.type()).isEqualTo(CardDispute.Type.CARD_DISPUTE)
        assertThat(cardDispute.userSubmissionRequiredBy()).isEmpty
        assertThat(cardDispute.visa())
            .contains(
                CardDispute.Visa.builder()
                    .addNetworkEvent(
                        CardDispute.Visa.NetworkEvent.builder()
                            .addAttachmentFile(
                                CardDispute.Visa.NetworkEvent.AttachmentFile.builder()
                                    .fileId("file_id")
                                    .build()
                            )
                            .category(CardDispute.Visa.NetworkEvent.Category.CHARGEBACK_ACCEPTED)
                            .createdAt(OffsetDateTime.parse("2019-12-27T18:11:19.117Z"))
                            .disputeFinancialTransactionId("dispute_financial_transaction_id")
                            .chargebackAccepted(
                                CardDispute.Visa.NetworkEvent.ChargebackAccepted.builder().build()
                            )
                            .chargebackSubmitted(
                                CardDispute.Visa.NetworkEvent.ChargebackSubmitted.builder().build()
                            )
                            .chargebackTimedOut(
                                CardDispute.Visa.NetworkEvent.ChargebackTimedOut.builder().build()
                            )
                            .merchantPrearbitrationDeclineSubmitted(
                                CardDispute.Visa.NetworkEvent.MerchantPrearbitrationDeclineSubmitted
                                    .builder()
                                    .build()
                            )
                            .merchantPrearbitrationReceived(
                                CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                    .builder()
                                    .cardholderNoLongerDisputes(
                                        CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                            .CardholderNoLongerDisputes
                                            .builder()
                                            .explanation(
                                                "See the attached email where the cardholder confirmed that they no longer dispute the transaction."
                                            )
                                            .build()
                                    )
                                    .compellingEvidence(
                                        CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                            .CompellingEvidence
                                            .builder()
                                            .category(
                                                CardDispute.Visa.NetworkEvent
                                                    .MerchantPrearbitrationReceived
                                                    .CompellingEvidence
                                                    .Category
                                                    .MERCHANDISE_USE
                                            )
                                            .explanation(null)
                                            .build()
                                    )
                                    .creditOrReversalProcessed(
                                        CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                            .CreditOrReversalProcessed
                                            .builder()
                                            .amount(4900L)
                                            .currency("USD")
                                            .explanation(
                                                "The user did not provide the required documentation."
                                            )
                                            .processedAt(LocalDate.parse("2020-01-31"))
                                            .build()
                                    )
                                    .delayedChargeTransaction(
                                        CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                            .DelayedChargeTransaction
                                            .builder()
                                            .explanation(null)
                                            .build()
                                    )
                                    .evidenceOfImprint(
                                        CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                            .EvidenceOfImprint
                                            .builder()
                                            .explanation(null)
                                            .build()
                                    )
                                    .invalidDispute(
                                        CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                            .InvalidDispute
                                            .builder()
                                            .explanation(
                                                "The user did not provide the required documentation."
                                            )
                                            .reason(
                                                CardDispute.Visa.NetworkEvent
                                                    .MerchantPrearbitrationReceived
                                                    .InvalidDispute
                                                    .Reason
                                                    .OTHER
                                            )
                                            .build()
                                    )
                                    .nonFiatCurrencyOrNonFungibleTokenReceived(
                                        CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                            .NonFiatCurrencyOrNonFungibleTokenReceived
                                            .builder()
                                            .blockchainTransactionHash(
                                                "0x1234567890123456789012345678901234567890"
                                            )
                                            .destinationWalletAddress(
                                                "0x1234567890123456789012345678901234567890"
                                            )
                                            .priorApprovedTransactions(
                                                "0x1234567890123456789012345678901234567890"
                                            )
                                            .build()
                                    )
                                    .priorUndisputedNonFraudTransactions(
                                        CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                            .PriorUndisputedNonFraudTransactions
                                            .builder()
                                            .explanation(null)
                                            .build()
                                    )
                                    .reason(
                                        CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                            .Reason
                                            .CARDHOLDER_NO_LONGER_DISPUTES
                                    )
                                    .build()
                            )
                            .merchantPrearbitrationTimedOut(
                                CardDispute.Visa.NetworkEvent.MerchantPrearbitrationTimedOut
                                    .builder()
                                    .build()
                            )
                            .represented(
                                CardDispute.Visa.NetworkEvent.Represented.builder()
                                    .cardholderNoLongerDisputes(
                                        CardDispute.Visa.NetworkEvent.Represented
                                            .CardholderNoLongerDisputes
                                            .builder()
                                            .explanation(
                                                "See the attached email where the cardholder confirmed that they no longer dispute the transaction."
                                            )
                                            .build()
                                    )
                                    .creditOrReversalProcessed(
                                        CardDispute.Visa.NetworkEvent.Represented
                                            .CreditOrReversalProcessed
                                            .builder()
                                            .amount(4900L)
                                            .currency("USD")
                                            .explanation(
                                                "The user did not provide the required documentation."
                                            )
                                            .processedAt(LocalDate.parse("2020-01-31"))
                                            .build()
                                    )
                                    .invalidDispute(
                                        CardDispute.Visa.NetworkEvent.Represented.InvalidDispute
                                            .builder()
                                            .explanation(
                                                "The user did not provide the required documentation."
                                            )
                                            .reason(
                                                CardDispute.Visa.NetworkEvent.Represented
                                                    .InvalidDispute
                                                    .Reason
                                                    .OTHER
                                            )
                                            .build()
                                    )
                                    .nonFiatCurrencyOrNonFungibleTokenAsDescribed(
                                        CardDispute.Visa.NetworkEvent.Represented
                                            .NonFiatCurrencyOrNonFungibleTokenAsDescribed
                                            .builder()
                                            .build()
                                    )
                                    .nonFiatCurrencyOrNonFungibleTokenReceived(
                                        CardDispute.Visa.NetworkEvent.Represented
                                            .NonFiatCurrencyOrNonFungibleTokenReceived
                                            .builder()
                                            .blockchainTransactionHash(
                                                "0x1234567890123456789012345678901234567890"
                                            )
                                            .destinationWalletAddress(
                                                "0x1234567890123456789012345678901234567890"
                                            )
                                            .priorApprovedTransactions(
                                                "0x1234567890123456789012345678901234567890"
                                            )
                                            .build()
                                    )
                                    .proofOfCashDisbursement(
                                        CardDispute.Visa.NetworkEvent.Represented
                                            .ProofOfCashDisbursement
                                            .builder()
                                            .explanation(null)
                                            .build()
                                    )
                                    .reason(
                                        CardDispute.Visa.NetworkEvent.Represented.Reason
                                            .INVALID_DISPUTE
                                    )
                                    .reversalIssued(
                                        CardDispute.Visa.NetworkEvent.Represented.ReversalIssued
                                            .builder()
                                            .explanation(
                                                "The merchant has issued a reversal for the transaction prior to the dispute being filed."
                                            )
                                            .build()
                                    )
                                    .build()
                            )
                            .representmentTimedOut(
                                CardDispute.Visa.NetworkEvent.RepresentmentTimedOut.builder()
                                    .build()
                            )
                            .userPrearbitrationAccepted(
                                CardDispute.Visa.NetworkEvent.UserPrearbitrationAccepted.builder()
                                    .build()
                            )
                            .userPrearbitrationDeclined(
                                CardDispute.Visa.NetworkEvent.UserPrearbitrationDeclined.builder()
                                    .build()
                            )
                            .userPrearbitrationSubmitted(
                                CardDispute.Visa.NetworkEvent.UserPrearbitrationSubmitted.builder()
                                    .build()
                            )
                            .userPrearbitrationTimedOut(
                                CardDispute.Visa.NetworkEvent.UserPrearbitrationTimedOut.builder()
                                    .build()
                            )
                            .userWithdrawalSubmitted(
                                CardDispute.Visa.NetworkEvent.UserWithdrawalSubmitted.builder()
                                    .build()
                            )
                            .build()
                    )
                    .requiredUserSubmissionCategory(null)
                    .addUserSubmission(
                        CardDispute.Visa.UserSubmission.builder()
                            .acceptedAt(null)
                            .amount(1000L)
                            .addAttachmentFile(
                                CardDispute.Visa.UserSubmission.AttachmentFile.builder()
                                    .fileId("file_id")
                                    .build()
                            )
                            .category(CardDispute.Visa.UserSubmission.Category.CHARGEBACK)
                            .createdAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                            .explanation(null)
                            .furtherInformationRequestedAt(null)
                            .furtherInformationRequestedReason(null)
                            .status(CardDispute.Visa.UserSubmission.Status.PENDING_REVIEWING)
                            .updatedAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                            .chargeback(
                                CardDispute.Visa.UserSubmission.Chargeback.builder()
                                    .authorization(
                                        CardDispute.Visa.UserSubmission.Chargeback.Authorization
                                            .builder()
                                            .accountStatus(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .Authorization
                                                    .AccountStatus
                                                    .ACCOUNT_CLOSED
                                            )
                                            .build()
                                    )
                                    .category(
                                        CardDispute.Visa.UserSubmission.Chargeback.Category.FRAUD
                                    )
                                    .consumerCanceledMerchandise(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerCanceledMerchandise
                                            .builder()
                                            .cardholderCancellation(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledMerchandise
                                                    .CardholderCancellation
                                                    .builder()
                                                    .canceledAt(LocalDate.parse("2019-12-27"))
                                                    .canceledPriorToShipDate(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerCanceledMerchandise
                                                            .CardholderCancellation
                                                            .CanceledPriorToShipDate
                                                            .CANCELED_PRIOR_TO_SHIP_DATE
                                                    )
                                                    .cancellationPolicyProvided(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerCanceledMerchandise
                                                            .CardholderCancellation
                                                            .CancellationPolicyProvided
                                                            .NOT_PROVIDED
                                                    )
                                                    .reason("reason")
                                                    .build()
                                            )
                                            .merchantResolutionAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledMerchandise
                                                    .MerchantResolutionAttempted
                                                    .ATTEMPTED
                                            )
                                            .notReturned(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledMerchandise
                                                    .NotReturned
                                                    .builder()
                                                    .build()
                                            )
                                            .purchaseExplanation("purchase_explanation")
                                            .receivedOrExpectedAt(LocalDate.parse("2019-12-27"))
                                            .returnAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledMerchandise
                                                    .ReturnAttempted
                                                    .builder()
                                                    .attemptExplanation("attempt_explanation")
                                                    .attemptReason(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerCanceledMerchandise
                                                            .ReturnAttempted
                                                            .AttemptReason
                                                            .MERCHANT_NOT_RESPONDING
                                                    )
                                                    .attemptedAt(LocalDate.parse("2019-12-27"))
                                                    .merchandiseDisposition(
                                                        "merchandise_disposition"
                                                    )
                                                    .build()
                                            )
                                            .returnOutcome(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledMerchandise
                                                    .ReturnOutcome
                                                    .NOT_RETURNED
                                            )
                                            .returned(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledMerchandise
                                                    .Returned
                                                    .builder()
                                                    .merchantReceivedReturnAt(
                                                        LocalDate.parse("2019-12-27")
                                                    )
                                                    .otherExplanation("other_explanation")
                                                    .returnMethod(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerCanceledMerchandise
                                                            .Returned
                                                            .ReturnMethod
                                                            .DHL
                                                    )
                                                    .returnedAt(LocalDate.parse("2019-12-27"))
                                                    .trackingNumber("tracking_number")
                                                    .build()
                                            )
                                            .build()
                                    )
                                    .consumerCanceledRecurringTransaction(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerCanceledRecurringTransaction
                                            .builder()
                                            .cancellationTarget(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledRecurringTransaction
                                                    .CancellationTarget
                                                    .ACCOUNT
                                            )
                                            .merchantContactMethods(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledRecurringTransaction
                                                    .MerchantContactMethods
                                                    .builder()
                                                    .applicationName("application_name")
                                                    .callCenterPhoneNumber(
                                                        "call_center_phone_number"
                                                    )
                                                    .emailAddress("email_address")
                                                    .inPersonAddress("in_person_address")
                                                    .mailingAddress("mailing_address")
                                                    .textPhoneNumber("text_phone_number")
                                                    .build()
                                            )
                                            .otherFormOfPaymentExplanation(
                                                "other_form_of_payment_explanation"
                                            )
                                            .transactionOrAccountCanceledAt(
                                                LocalDate.parse("2019-12-27")
                                            )
                                            .build()
                                    )
                                    .consumerCanceledServices(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerCanceledServices
                                            .builder()
                                            .cardholderCancellation(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledServices
                                                    .CardholderCancellation
                                                    .builder()
                                                    .canceledAt(LocalDate.parse("2019-12-27"))
                                                    .cancellationPolicyProvided(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerCanceledServices
                                                            .CardholderCancellation
                                                            .CancellationPolicyProvided
                                                            .NOT_PROVIDED
                                                    )
                                                    .reason("reason")
                                                    .build()
                                            )
                                            .contractedAt(LocalDate.parse("2019-12-27"))
                                            .guaranteedReservation(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledServices
                                                    .GuaranteedReservation
                                                    .builder()
                                                    .explanation(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerCanceledServices
                                                            .GuaranteedReservation
                                                            .Explanation
                                                            .CARDHOLDER_CANCELED_PRIOR_TO_SERVICE
                                                    )
                                                    .build()
                                            )
                                            .merchantResolutionAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledServices
                                                    .MerchantResolutionAttempted
                                                    .ATTEMPTED
                                            )
                                            .other(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledServices
                                                    .Other
                                                    .builder()
                                                    .build()
                                            )
                                            .purchaseExplanation("purchase_explanation")
                                            .serviceType(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledServices
                                                    .ServiceType
                                                    .GUARANTEED_RESERVATION
                                            )
                                            .timeshare(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerCanceledServices
                                                    .Timeshare
                                                    .builder()
                                                    .build()
                                            )
                                            .build()
                                    )
                                    .consumerCounterfeitMerchandise(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerCounterfeitMerchandise
                                            .builder()
                                            .counterfeitExplanation("counterfeit_explanation")
                                            .dispositionExplanation("disposition_explanation")
                                            .orderExplanation("order_explanation")
                                            .receivedAt(LocalDate.parse("2019-12-27"))
                                            .build()
                                    )
                                    .consumerCreditNotProcessed(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerCreditNotProcessed
                                            .builder()
                                            .canceledOrReturnedAt(LocalDate.parse("2019-12-27"))
                                            .creditExpectedAt(LocalDate.parse("2019-12-27"))
                                            .build()
                                    )
                                    .consumerDamagedOrDefectiveMerchandise(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerDamagedOrDefectiveMerchandise
                                            .builder()
                                            .merchantResolutionAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerDamagedOrDefectiveMerchandise
                                                    .MerchantResolutionAttempted
                                                    .ATTEMPTED
                                            )
                                            .notReturned(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerDamagedOrDefectiveMerchandise
                                                    .NotReturned
                                                    .builder()
                                                    .build()
                                            )
                                            .orderAndIssueExplanation("order_and_issue_explanation")
                                            .receivedAt(LocalDate.parse("2019-12-27"))
                                            .returnAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerDamagedOrDefectiveMerchandise
                                                    .ReturnAttempted
                                                    .builder()
                                                    .attemptExplanation("attempt_explanation")
                                                    .attemptReason(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerDamagedOrDefectiveMerchandise
                                                            .ReturnAttempted
                                                            .AttemptReason
                                                            .MERCHANT_NOT_RESPONDING
                                                    )
                                                    .attemptedAt(LocalDate.parse("2019-12-27"))
                                                    .merchandiseDisposition(
                                                        "merchandise_disposition"
                                                    )
                                                    .build()
                                            )
                                            .returnOutcome(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerDamagedOrDefectiveMerchandise
                                                    .ReturnOutcome
                                                    .NOT_RETURNED
                                            )
                                            .returned(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerDamagedOrDefectiveMerchandise
                                                    .Returned
                                                    .builder()
                                                    .merchantReceivedReturnAt(
                                                        LocalDate.parse("2019-12-27")
                                                    )
                                                    .otherExplanation("other_explanation")
                                                    .returnMethod(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerDamagedOrDefectiveMerchandise
                                                            .Returned
                                                            .ReturnMethod
                                                            .DHL
                                                    )
                                                    .returnedAt(LocalDate.parse("2019-12-27"))
                                                    .trackingNumber("tracking_number")
                                                    .build()
                                            )
                                            .build()
                                    )
                                    .consumerMerchandiseMisrepresentation(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerMerchandiseMisrepresentation
                                            .builder()
                                            .merchantResolutionAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseMisrepresentation
                                                    .MerchantResolutionAttempted
                                                    .ATTEMPTED
                                            )
                                            .misrepresentationExplanation(
                                                "misrepresentation_explanation"
                                            )
                                            .notReturned(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseMisrepresentation
                                                    .NotReturned
                                                    .builder()
                                                    .build()
                                            )
                                            .purchaseExplanation("purchase_explanation")
                                            .receivedAt(LocalDate.parse("2019-12-27"))
                                            .returnAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseMisrepresentation
                                                    .ReturnAttempted
                                                    .builder()
                                                    .attemptExplanation("attempt_explanation")
                                                    .attemptReason(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerMerchandiseMisrepresentation
                                                            .ReturnAttempted
                                                            .AttemptReason
                                                            .MERCHANT_NOT_RESPONDING
                                                    )
                                                    .attemptedAt(LocalDate.parse("2019-12-27"))
                                                    .merchandiseDisposition(
                                                        "merchandise_disposition"
                                                    )
                                                    .build()
                                            )
                                            .returnOutcome(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseMisrepresentation
                                                    .ReturnOutcome
                                                    .NOT_RETURNED
                                            )
                                            .returned(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseMisrepresentation
                                                    .Returned
                                                    .builder()
                                                    .merchantReceivedReturnAt(
                                                        LocalDate.parse("2019-12-27")
                                                    )
                                                    .otherExplanation("other_explanation")
                                                    .returnMethod(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerMerchandiseMisrepresentation
                                                            .Returned
                                                            .ReturnMethod
                                                            .DHL
                                                    )
                                                    .returnedAt(LocalDate.parse("2019-12-27"))
                                                    .trackingNumber("tracking_number")
                                                    .build()
                                            )
                                            .build()
                                    )
                                    .consumerMerchandiseNotAsDescribed(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerMerchandiseNotAsDescribed
                                            .builder()
                                            .merchantResolutionAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotAsDescribed
                                                    .MerchantResolutionAttempted
                                                    .ATTEMPTED
                                            )
                                            .receivedAt(LocalDate.parse("2019-12-27"))
                                            .returnAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotAsDescribed
                                                    .ReturnAttempted
                                                    .builder()
                                                    .attemptExplanation("attempt_explanation")
                                                    .attemptReason(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerMerchandiseNotAsDescribed
                                                            .ReturnAttempted
                                                            .AttemptReason
                                                            .MERCHANT_NOT_RESPONDING
                                                    )
                                                    .attemptedAt(LocalDate.parse("2019-12-27"))
                                                    .merchandiseDisposition(
                                                        "merchandise_disposition"
                                                    )
                                                    .build()
                                            )
                                            .returnOutcome(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotAsDescribed
                                                    .ReturnOutcome
                                                    .RETURNED
                                            )
                                            .returned(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotAsDescribed
                                                    .Returned
                                                    .builder()
                                                    .merchantReceivedReturnAt(
                                                        LocalDate.parse("2019-12-27")
                                                    )
                                                    .otherExplanation("other_explanation")
                                                    .returnMethod(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerMerchandiseNotAsDescribed
                                                            .Returned
                                                            .ReturnMethod
                                                            .DHL
                                                    )
                                                    .returnedAt(LocalDate.parse("2019-12-27"))
                                                    .trackingNumber("tracking_number")
                                                    .build()
                                            )
                                            .build()
                                    )
                                    .consumerMerchandiseNotReceived(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerMerchandiseNotReceived
                                            .builder()
                                            .cancellationOutcome(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotReceived
                                                    .CancellationOutcome
                                                    .CARDHOLDER_CANCELLATION_PRIOR_TO_EXPECTED_RECEIPT
                                            )
                                            .cardholderCancellationPriorToExpectedReceipt(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotReceived
                                                    .CardholderCancellationPriorToExpectedReceipt
                                                    .builder()
                                                    .canceledAt(LocalDate.parse("2019-12-27"))
                                                    .reason("reason")
                                                    .build()
                                            )
                                            .delayed(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotReceived
                                                    .Delayed
                                                    .builder()
                                                    .explanation("explanation")
                                                    .notReturned(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerMerchandiseNotReceived
                                                            .Delayed
                                                            .NotReturned
                                                            .builder()
                                                            .build()
                                                    )
                                                    .returnAttempted(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerMerchandiseNotReceived
                                                            .Delayed
                                                            .ReturnAttempted
                                                            .builder()
                                                            .attemptedAt(
                                                                LocalDate.parse("2019-12-27")
                                                            )
                                                            .build()
                                                    )
                                                    .returnOutcome(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerMerchandiseNotReceived
                                                            .Delayed
                                                            .ReturnOutcome
                                                            .NOT_RETURNED
                                                    )
                                                    .returned(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerMerchandiseNotReceived
                                                            .Delayed
                                                            .Returned
                                                            .builder()
                                                            .merchantReceivedReturnAt(
                                                                LocalDate.parse("2019-12-27")
                                                            )
                                                            .returnedAt(
                                                                LocalDate.parse("2019-12-27")
                                                            )
                                                            .build()
                                                    )
                                                    .build()
                                            )
                                            .deliveredToWrongLocation(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotReceived
                                                    .DeliveredToWrongLocation
                                                    .builder()
                                                    .agreedLocation("agreed_location")
                                                    .build()
                                            )
                                            .deliveryIssue(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotReceived
                                                    .DeliveryIssue
                                                    .DELAYED
                                            )
                                            .lastExpectedReceiptAt(LocalDate.parse("2019-12-27"))
                                            .merchantCancellation(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotReceived
                                                    .MerchantCancellation
                                                    .builder()
                                                    .canceledAt(LocalDate.parse("2019-12-27"))
                                                    .build()
                                            )
                                            .merchantResolutionAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotReceived
                                                    .MerchantResolutionAttempted
                                                    .ATTEMPTED
                                            )
                                            .noCancellation(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerMerchandiseNotReceived
                                                    .NoCancellation
                                                    .builder()
                                                    .build()
                                            )
                                            .purchaseInfoAndExplanation(
                                                "purchase_info_and_explanation"
                                            )
                                            .build()
                                    )
                                    .consumerNonReceiptOfCash(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerNonReceiptOfCash
                                            .builder()
                                            .build()
                                    )
                                    .consumerOriginalCreditTransactionNotAccepted(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerOriginalCreditTransactionNotAccepted
                                            .builder()
                                            .explanation("explanation")
                                            .reason(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerOriginalCreditTransactionNotAccepted
                                                    .Reason
                                                    .PROHIBITED_BY_LOCAL_LAWS_OR_REGULATION
                                            )
                                            .build()
                                    )
                                    .consumerQualityMerchandise(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerQualityMerchandise
                                            .builder()
                                            .expectedAt(LocalDate.parse("2019-12-27"))
                                            .merchantResolutionAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerQualityMerchandise
                                                    .MerchantResolutionAttempted
                                                    .ATTEMPTED
                                            )
                                            .notReturned(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerQualityMerchandise
                                                    .NotReturned
                                                    .builder()
                                                    .build()
                                            )
                                            .ongoingNegotiations(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerQualityMerchandise
                                                    .OngoingNegotiations
                                                    .builder()
                                                    .explanation("explanation")
                                                    .issuerFirstNotifiedAt(
                                                        LocalDate.parse("2019-12-27")
                                                    )
                                                    .startedAt(LocalDate.parse("2019-12-27"))
                                                    .build()
                                            )
                                            .purchaseInfoAndQualityIssue(
                                                "purchase_info_and_quality_issue"
                                            )
                                            .receivedAt(LocalDate.parse("2019-12-27"))
                                            .returnAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerQualityMerchandise
                                                    .ReturnAttempted
                                                    .builder()
                                                    .attemptExplanation("attempt_explanation")
                                                    .attemptReason(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerQualityMerchandise
                                                            .ReturnAttempted
                                                            .AttemptReason
                                                            .MERCHANT_NOT_RESPONDING
                                                    )
                                                    .attemptedAt(LocalDate.parse("2019-12-27"))
                                                    .merchandiseDisposition(
                                                        "merchandise_disposition"
                                                    )
                                                    .build()
                                            )
                                            .returnOutcome(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerQualityMerchandise
                                                    .ReturnOutcome
                                                    .NOT_RETURNED
                                            )
                                            .returned(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerQualityMerchandise
                                                    .Returned
                                                    .builder()
                                                    .merchantReceivedReturnAt(
                                                        LocalDate.parse("2019-12-27")
                                                    )
                                                    .otherExplanation("other_explanation")
                                                    .returnMethod(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerQualityMerchandise
                                                            .Returned
                                                            .ReturnMethod
                                                            .DHL
                                                    )
                                                    .returnedAt(LocalDate.parse("2019-12-27"))
                                                    .trackingNumber("tracking_number")
                                                    .build()
                                            )
                                            .build()
                                    )
                                    .consumerQualityServices(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerQualityServices
                                            .builder()
                                            .cardholderCancellation(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerQualityServices
                                                    .CardholderCancellation
                                                    .builder()
                                                    .acceptedByMerchant(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerQualityServices
                                                            .CardholderCancellation
                                                            .AcceptedByMerchant
                                                            .ACCEPTED
                                                    )
                                                    .canceledAt(LocalDate.parse("2019-12-27"))
                                                    .reason("reason")
                                                    .build()
                                            )
                                            .cardholderPaidToHaveWorkRedone(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerQualityServices
                                                    .CardholderPaidToHaveWorkRedone
                                                    .DID_NOT_PAY_TO_HAVE_WORK_REDONE
                                            )
                                            .nonFiatCurrencyOrNonFungibleTokenRelatedAndNotMatchingDescription(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerQualityServices
                                                    .NonFiatCurrencyOrNonFungibleTokenRelatedAndNotMatchingDescription
                                                    .NOT_RELATED
                                            )
                                            .ongoingNegotiations(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerQualityServices
                                                    .OngoingNegotiations
                                                    .builder()
                                                    .explanation("explanation")
                                                    .issuerFirstNotifiedAt(
                                                        LocalDate.parse("2019-12-27")
                                                    )
                                                    .startedAt(LocalDate.parse("2019-12-27"))
                                                    .build()
                                            )
                                            .purchaseInfoAndQualityIssue(
                                                "purchase_info_and_quality_issue"
                                            )
                                            .restaurantFoodRelated(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerQualityServices
                                                    .RestaurantFoodRelated
                                                    .NOT_RELATED
                                            )
                                            .servicesReceivedAt(LocalDate.parse("2019-12-27"))
                                            .build()
                                    )
                                    .consumerServicesMisrepresentation(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerServicesMisrepresentation
                                            .builder()
                                            .cardholderCancellation(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerServicesMisrepresentation
                                                    .CardholderCancellation
                                                    .builder()
                                                    .acceptedByMerchant(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerServicesMisrepresentation
                                                            .CardholderCancellation
                                                            .AcceptedByMerchant
                                                            .ACCEPTED
                                                    )
                                                    .canceledAt(LocalDate.parse("2019-12-27"))
                                                    .reason("reason")
                                                    .build()
                                            )
                                            .merchantResolutionAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerServicesMisrepresentation
                                                    .MerchantResolutionAttempted
                                                    .ATTEMPTED
                                            )
                                            .misrepresentationExplanation(
                                                "misrepresentation_explanation"
                                            )
                                            .purchaseExplanation("purchase_explanation")
                                            .receivedAt(LocalDate.parse("2019-12-27"))
                                            .build()
                                    )
                                    .consumerServicesNotAsDescribed(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerServicesNotAsDescribed
                                            .builder()
                                            .cardholderCancellation(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerServicesNotAsDescribed
                                                    .CardholderCancellation
                                                    .builder()
                                                    .acceptedByMerchant(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ConsumerServicesNotAsDescribed
                                                            .CardholderCancellation
                                                            .AcceptedByMerchant
                                                            .ACCEPTED
                                                    )
                                                    .canceledAt(LocalDate.parse("2019-12-27"))
                                                    .reason("reason")
                                                    .build()
                                            )
                                            .explanation("explanation")
                                            .merchantResolutionAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerServicesNotAsDescribed
                                                    .MerchantResolutionAttempted
                                                    .ATTEMPTED
                                            )
                                            .receivedAt(LocalDate.parse("2019-12-27"))
                                            .build()
                                    )
                                    .consumerServicesNotReceived(
                                        CardDispute.Visa.UserSubmission.Chargeback
                                            .ConsumerServicesNotReceived
                                            .builder()
                                            .cancellationOutcome(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerServicesNotReceived
                                                    .CancellationOutcome
                                                    .CARDHOLDER_CANCELLATION_PRIOR_TO_EXPECTED_RECEIPT
                                            )
                                            .cardholderCancellationPriorToExpectedReceipt(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerServicesNotReceived
                                                    .CardholderCancellationPriorToExpectedReceipt
                                                    .builder()
                                                    .canceledAt(LocalDate.parse("2019-12-27"))
                                                    .reason("reason")
                                                    .build()
                                            )
                                            .lastExpectedReceiptAt(LocalDate.parse("2019-12-27"))
                                            .merchantCancellation(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerServicesNotReceived
                                                    .MerchantCancellation
                                                    .builder()
                                                    .canceledAt(LocalDate.parse("2019-12-27"))
                                                    .build()
                                            )
                                            .merchantResolutionAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerServicesNotReceived
                                                    .MerchantResolutionAttempted
                                                    .ATTEMPTED
                                            )
                                            .noCancellation(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ConsumerServicesNotReceived
                                                    .NoCancellation
                                                    .builder()
                                                    .build()
                                            )
                                            .purchaseInfoAndExplanation(
                                                "purchase_info_and_explanation"
                                            )
                                            .build()
                                    )
                                    .fraud(
                                        CardDispute.Visa.UserSubmission.Chargeback.Fraud.builder()
                                            .fraudType(
                                                CardDispute.Visa.UserSubmission.Chargeback.Fraud
                                                    .FraudType
                                                    .LOST
                                            )
                                            .build()
                                    )
                                    .processingError(
                                        CardDispute.Visa.UserSubmission.Chargeback.ProcessingError
                                            .builder()
                                            .duplicateTransaction(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ProcessingError
                                                    .DuplicateTransaction
                                                    .builder()
                                                    .otherTransactionId("other_transaction_id")
                                                    .build()
                                            )
                                            .errorReason(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ProcessingError
                                                    .ErrorReason
                                                    .DUPLICATE_TRANSACTION
                                            )
                                            .incorrectAmount(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ProcessingError
                                                    .IncorrectAmount
                                                    .builder()
                                                    .expectedAmount(0L)
                                                    .build()
                                            )
                                            .merchantResolutionAttempted(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ProcessingError
                                                    .MerchantResolutionAttempted
                                                    .ATTEMPTED
                                            )
                                            .paidByOtherMeans(
                                                CardDispute.Visa.UserSubmission.Chargeback
                                                    .ProcessingError
                                                    .PaidByOtherMeans
                                                    .builder()
                                                    .otherFormOfPaymentEvidence(
                                                        CardDispute.Visa.UserSubmission.Chargeback
                                                            .ProcessingError
                                                            .PaidByOtherMeans
                                                            .OtherFormOfPaymentEvidence
                                                            .CANCELED_CHECK
                                                    )
                                                    .otherTransactionId("other_transaction_id")
                                                    .build()
                                            )
                                            .build()
                                    )
                                    .build()
                            )
                            .merchantPrearbitrationDecline(
                                CardDispute.Visa.UserSubmission.MerchantPrearbitrationDecline
                                    .builder()
                                    .reason(
                                        "I do not believe the explanation given by the merchant is valid."
                                    )
                                    .build()
                            )
                            .userPrearbitration(
                                CardDispute.Visa.UserSubmission.UserPrearbitration.builder()
                                    .categoryChange(
                                        CardDispute.Visa.UserSubmission.UserPrearbitration
                                            .CategoryChange
                                            .builder()
                                            .category(
                                                CardDispute.Visa.UserSubmission.UserPrearbitration
                                                    .CategoryChange
                                                    .Category
                                                    .FRAUD
                                            )
                                            .reason("Based on the response from the merchant.")
                                            .build()
                                    )
                                    .reason(
                                        "I disagree with the explanation given by the merchant."
                                    )
                                    .build()
                            )
                            .build()
                    )
                    .build()
            )
        assertThat(cardDispute.win())
            .contains(
                CardDispute.Win.builder()
                    .wonAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                    .build()
            )
        assertThat(cardDispute.withdrawal())
            .contains(
                CardDispute.Withdrawal.builder()
                    .explanation("The cardholder requested a withdrawal of the dispute.")
                    .build()
            )
    }

    @Test
    fun roundtrip() {
        val jsonMapper = jsonMapper()
        val cardDispute =
            CardDispute.builder()
                .id("card_dispute_h9sc95nbl1cgltpp7men")
                .amount(1000L)
                .cardId("card_oubs0hwk5rn6knuecxg2")
                .createdAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                .disputedTransactionId("transaction_uyrp7fld2ium70oa7oi")
                .idempotencyKey(null)
                .loss(
                    CardDispute.Loss.builder()
                        .lostAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                        .reason(CardDispute.Loss.Reason.USER_WITHDRAWN)
                        .build()
                )
                .network(CardDispute.Network.VISA)
                .rejection(
                    CardDispute.Rejection.builder()
                        .explanation("Card Dispute is not allowed per network rules.")
                        .rejectedAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                        .build()
                )
                .status(CardDispute.Status.PENDING_RESPONSE)
                .type(CardDispute.Type.CARD_DISPUTE)
                .userSubmissionRequiredBy(null)
                .visa(
                    CardDispute.Visa.builder()
                        .addNetworkEvent(
                            CardDispute.Visa.NetworkEvent.builder()
                                .addAttachmentFile(
                                    CardDispute.Visa.NetworkEvent.AttachmentFile.builder()
                                        .fileId("file_id")
                                        .build()
                                )
                                .category(
                                    CardDispute.Visa.NetworkEvent.Category.CHARGEBACK_ACCEPTED
                                )
                                .createdAt(OffsetDateTime.parse("2019-12-27T18:11:19.117Z"))
                                .disputeFinancialTransactionId("dispute_financial_transaction_id")
                                .chargebackAccepted(
                                    CardDispute.Visa.NetworkEvent.ChargebackAccepted.builder()
                                        .build()
                                )
                                .chargebackSubmitted(
                                    CardDispute.Visa.NetworkEvent.ChargebackSubmitted.builder()
                                        .build()
                                )
                                .chargebackTimedOut(
                                    CardDispute.Visa.NetworkEvent.ChargebackTimedOut.builder()
                                        .build()
                                )
                                .merchantPrearbitrationDeclineSubmitted(
                                    CardDispute.Visa.NetworkEvent
                                        .MerchantPrearbitrationDeclineSubmitted
                                        .builder()
                                        .build()
                                )
                                .merchantPrearbitrationReceived(
                                    CardDispute.Visa.NetworkEvent.MerchantPrearbitrationReceived
                                        .builder()
                                        .cardholderNoLongerDisputes(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .CardholderNoLongerDisputes
                                                .builder()
                                                .explanation(
                                                    "See the attached email where the cardholder confirmed that they no longer dispute the transaction."
                                                )
                                                .build()
                                        )
                                        .compellingEvidence(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .CompellingEvidence
                                                .builder()
                                                .category(
                                                    CardDispute.Visa.NetworkEvent
                                                        .MerchantPrearbitrationReceived
                                                        .CompellingEvidence
                                                        .Category
                                                        .MERCHANDISE_USE
                                                )
                                                .explanation(null)
                                                .build()
                                        )
                                        .creditOrReversalProcessed(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .CreditOrReversalProcessed
                                                .builder()
                                                .amount(4900L)
                                                .currency("USD")
                                                .explanation(
                                                    "The user did not provide the required documentation."
                                                )
                                                .processedAt(LocalDate.parse("2020-01-31"))
                                                .build()
                                        )
                                        .delayedChargeTransaction(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .DelayedChargeTransaction
                                                .builder()
                                                .explanation(null)
                                                .build()
                                        )
                                        .evidenceOfImprint(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .EvidenceOfImprint
                                                .builder()
                                                .explanation(null)
                                                .build()
                                        )
                                        .invalidDispute(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .InvalidDispute
                                                .builder()
                                                .explanation(
                                                    "The user did not provide the required documentation."
                                                )
                                                .reason(
                                                    CardDispute.Visa.NetworkEvent
                                                        .MerchantPrearbitrationReceived
                                                        .InvalidDispute
                                                        .Reason
                                                        .OTHER
                                                )
                                                .build()
                                        )
                                        .nonFiatCurrencyOrNonFungibleTokenReceived(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .NonFiatCurrencyOrNonFungibleTokenReceived
                                                .builder()
                                                .blockchainTransactionHash(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .destinationWalletAddress(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .priorApprovedTransactions(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .build()
                                        )
                                        .priorUndisputedNonFraudTransactions(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .PriorUndisputedNonFraudTransactions
                                                .builder()
                                                .explanation(null)
                                                .build()
                                        )
                                        .reason(
                                            CardDispute.Visa.NetworkEvent
                                                .MerchantPrearbitrationReceived
                                                .Reason
                                                .CARDHOLDER_NO_LONGER_DISPUTES
                                        )
                                        .build()
                                )
                                .merchantPrearbitrationTimedOut(
                                    CardDispute.Visa.NetworkEvent.MerchantPrearbitrationTimedOut
                                        .builder()
                                        .build()
                                )
                                .represented(
                                    CardDispute.Visa.NetworkEvent.Represented.builder()
                                        .cardholderNoLongerDisputes(
                                            CardDispute.Visa.NetworkEvent.Represented
                                                .CardholderNoLongerDisputes
                                                .builder()
                                                .explanation(
                                                    "See the attached email where the cardholder confirmed that they no longer dispute the transaction."
                                                )
                                                .build()
                                        )
                                        .creditOrReversalProcessed(
                                            CardDispute.Visa.NetworkEvent.Represented
                                                .CreditOrReversalProcessed
                                                .builder()
                                                .amount(4900L)
                                                .currency("USD")
                                                .explanation(
                                                    "The user did not provide the required documentation."
                                                )
                                                .processedAt(LocalDate.parse("2020-01-31"))
                                                .build()
                                        )
                                        .invalidDispute(
                                            CardDispute.Visa.NetworkEvent.Represented.InvalidDispute
                                                .builder()
                                                .explanation(
                                                    "The user did not provide the required documentation."
                                                )
                                                .reason(
                                                    CardDispute.Visa.NetworkEvent.Represented
                                                        .InvalidDispute
                                                        .Reason
                                                        .OTHER
                                                )
                                                .build()
                                        )
                                        .nonFiatCurrencyOrNonFungibleTokenAsDescribed(
                                            CardDispute.Visa.NetworkEvent.Represented
                                                .NonFiatCurrencyOrNonFungibleTokenAsDescribed
                                                .builder()
                                                .build()
                                        )
                                        .nonFiatCurrencyOrNonFungibleTokenReceived(
                                            CardDispute.Visa.NetworkEvent.Represented
                                                .NonFiatCurrencyOrNonFungibleTokenReceived
                                                .builder()
                                                .blockchainTransactionHash(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .destinationWalletAddress(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .priorApprovedTransactions(
                                                    "0x1234567890123456789012345678901234567890"
                                                )
                                                .build()
                                        )
                                        .proofOfCashDisbursement(
                                            CardDispute.Visa.NetworkEvent.Represented
                                                .ProofOfCashDisbursement
                                                .builder()
                                                .explanation(null)
                                                .build()
                                        )
                                        .reason(
                                            CardDispute.Visa.NetworkEvent.Represented.Reason
                                                .INVALID_DISPUTE
                                        )
                                        .reversalIssued(
                                            CardDispute.Visa.NetworkEvent.Represented.ReversalIssued
                                                .builder()
                                                .explanation(
                                                    "The merchant has issued a reversal for the transaction prior to the dispute being filed."
                                                )
                                                .build()
                                        )
                                        .build()
                                )
                                .representmentTimedOut(
                                    CardDispute.Visa.NetworkEvent.RepresentmentTimedOut.builder()
                                        .build()
                                )
                                .userPrearbitrationAccepted(
                                    CardDispute.Visa.NetworkEvent.UserPrearbitrationAccepted
                                        .builder()
                                        .build()
                                )
                                .userPrearbitrationDeclined(
                                    CardDispute.Visa.NetworkEvent.UserPrearbitrationDeclined
                                        .builder()
                                        .build()
                                )
                                .userPrearbitrationSubmitted(
                                    CardDispute.Visa.NetworkEvent.UserPrearbitrationSubmitted
                                        .builder()
                                        .build()
                                )
                                .userPrearbitrationTimedOut(
                                    CardDispute.Visa.NetworkEvent.UserPrearbitrationTimedOut
                                        .builder()
                                        .build()
                                )
                                .userWithdrawalSubmitted(
                                    CardDispute.Visa.NetworkEvent.UserWithdrawalSubmitted.builder()
                                        .build()
                                )
                                .build()
                        )
                        .requiredUserSubmissionCategory(null)
                        .addUserSubmission(
                            CardDispute.Visa.UserSubmission.builder()
                                .acceptedAt(null)
                                .amount(1000L)
                                .addAttachmentFile(
                                    CardDispute.Visa.UserSubmission.AttachmentFile.builder()
                                        .fileId("file_id")
                                        .build()
                                )
                                .category(CardDispute.Visa.UserSubmission.Category.CHARGEBACK)
                                .createdAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                                .explanation(null)
                                .furtherInformationRequestedAt(null)
                                .furtherInformationRequestedReason(null)
                                .status(CardDispute.Visa.UserSubmission.Status.PENDING_REVIEWING)
                                .updatedAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                                .chargeback(
                                    CardDispute.Visa.UserSubmission.Chargeback.builder()
                                        .authorization(
                                            CardDispute.Visa.UserSubmission.Chargeback.Authorization
                                                .builder()
                                                .accountStatus(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .Authorization
                                                        .AccountStatus
                                                        .ACCOUNT_CLOSED
                                                )
                                                .build()
                                        )
                                        .category(
                                            CardDispute.Visa.UserSubmission.Chargeback.Category
                                                .FRAUD
                                        )
                                        .consumerCanceledMerchandise(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerCanceledMerchandise
                                                .builder()
                                                .cardholderCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .CardholderCancellation
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .canceledPriorToShipDate(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledMerchandise
                                                                .CardholderCancellation
                                                                .CanceledPriorToShipDate
                                                                .CANCELED_PRIOR_TO_SHIP_DATE
                                                        )
                                                        .cancellationPolicyProvided(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledMerchandise
                                                                .CardholderCancellation
                                                                .CancellationPolicyProvided
                                                                .NOT_PROVIDED
                                                        )
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .notReturned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .NotReturned
                                                        .builder()
                                                        .build()
                                                )
                                                .purchaseExplanation("purchase_explanation")
                                                .receivedOrExpectedAt(LocalDate.parse("2019-12-27"))
                                                .returnAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .ReturnAttempted
                                                        .builder()
                                                        .attemptExplanation("attempt_explanation")
                                                        .attemptReason(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledMerchandise
                                                                .ReturnAttempted
                                                                .AttemptReason
                                                                .MERCHANT_NOT_RESPONDING
                                                        )
                                                        .attemptedAt(LocalDate.parse("2019-12-27"))
                                                        .merchandiseDisposition(
                                                            "merchandise_disposition"
                                                        )
                                                        .build()
                                                )
                                                .returnOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .ReturnOutcome
                                                        .NOT_RETURNED
                                                )
                                                .returned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledMerchandise
                                                        .Returned
                                                        .builder()
                                                        .merchantReceivedReturnAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .otherExplanation("other_explanation")
                                                        .returnMethod(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledMerchandise
                                                                .Returned
                                                                .ReturnMethod
                                                                .DHL
                                                        )
                                                        .returnedAt(LocalDate.parse("2019-12-27"))
                                                        .trackingNumber("tracking_number")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerCanceledRecurringTransaction(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerCanceledRecurringTransaction
                                                .builder()
                                                .cancellationTarget(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledRecurringTransaction
                                                        .CancellationTarget
                                                        .ACCOUNT
                                                )
                                                .merchantContactMethods(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledRecurringTransaction
                                                        .MerchantContactMethods
                                                        .builder()
                                                        .applicationName("application_name")
                                                        .callCenterPhoneNumber(
                                                            "call_center_phone_number"
                                                        )
                                                        .emailAddress("email_address")
                                                        .inPersonAddress("in_person_address")
                                                        .mailingAddress("mailing_address")
                                                        .textPhoneNumber("text_phone_number")
                                                        .build()
                                                )
                                                .otherFormOfPaymentExplanation(
                                                    "other_form_of_payment_explanation"
                                                )
                                                .transactionOrAccountCanceledAt(
                                                    LocalDate.parse("2019-12-27")
                                                )
                                                .build()
                                        )
                                        .consumerCanceledServices(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerCanceledServices
                                                .builder()
                                                .cardholderCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .CardholderCancellation
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .cancellationPolicyProvided(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledServices
                                                                .CardholderCancellation
                                                                .CancellationPolicyProvided
                                                                .NOT_PROVIDED
                                                        )
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .contractedAt(LocalDate.parse("2019-12-27"))
                                                .guaranteedReservation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .GuaranteedReservation
                                                        .builder()
                                                        .explanation(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerCanceledServices
                                                                .GuaranteedReservation
                                                                .Explanation
                                                                .CARDHOLDER_CANCELED_PRIOR_TO_SERVICE
                                                        )
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .other(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .Other
                                                        .builder()
                                                        .build()
                                                )
                                                .purchaseExplanation("purchase_explanation")
                                                .serviceType(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .ServiceType
                                                        .GUARANTEED_RESERVATION
                                                )
                                                .timeshare(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerCanceledServices
                                                        .Timeshare
                                                        .builder()
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerCounterfeitMerchandise(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerCounterfeitMerchandise
                                                .builder()
                                                .counterfeitExplanation("counterfeit_explanation")
                                                .dispositionExplanation("disposition_explanation")
                                                .orderExplanation("order_explanation")
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .build()
                                        )
                                        .consumerCreditNotProcessed(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerCreditNotProcessed
                                                .builder()
                                                .canceledOrReturnedAt(LocalDate.parse("2019-12-27"))
                                                .creditExpectedAt(LocalDate.parse("2019-12-27"))
                                                .build()
                                        )
                                        .consumerDamagedOrDefectiveMerchandise(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerDamagedOrDefectiveMerchandise
                                                .builder()
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerDamagedOrDefectiveMerchandise
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .notReturned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerDamagedOrDefectiveMerchandise
                                                        .NotReturned
                                                        .builder()
                                                        .build()
                                                )
                                                .orderAndIssueExplanation(
                                                    "order_and_issue_explanation"
                                                )
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .returnAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerDamagedOrDefectiveMerchandise
                                                        .ReturnAttempted
                                                        .builder()
                                                        .attemptExplanation("attempt_explanation")
                                                        .attemptReason(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerDamagedOrDefectiveMerchandise
                                                                .ReturnAttempted
                                                                .AttemptReason
                                                                .MERCHANT_NOT_RESPONDING
                                                        )
                                                        .attemptedAt(LocalDate.parse("2019-12-27"))
                                                        .merchandiseDisposition(
                                                            "merchandise_disposition"
                                                        )
                                                        .build()
                                                )
                                                .returnOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerDamagedOrDefectiveMerchandise
                                                        .ReturnOutcome
                                                        .NOT_RETURNED
                                                )
                                                .returned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerDamagedOrDefectiveMerchandise
                                                        .Returned
                                                        .builder()
                                                        .merchantReceivedReturnAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .otherExplanation("other_explanation")
                                                        .returnMethod(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerDamagedOrDefectiveMerchandise
                                                                .Returned
                                                                .ReturnMethod
                                                                .DHL
                                                        )
                                                        .returnedAt(LocalDate.parse("2019-12-27"))
                                                        .trackingNumber("tracking_number")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerMerchandiseMisrepresentation(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerMerchandiseMisrepresentation
                                                .builder()
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseMisrepresentation
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .misrepresentationExplanation(
                                                    "misrepresentation_explanation"
                                                )
                                                .notReturned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseMisrepresentation
                                                        .NotReturned
                                                        .builder()
                                                        .build()
                                                )
                                                .purchaseExplanation("purchase_explanation")
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .returnAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseMisrepresentation
                                                        .ReturnAttempted
                                                        .builder()
                                                        .attemptExplanation("attempt_explanation")
                                                        .attemptReason(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseMisrepresentation
                                                                .ReturnAttempted
                                                                .AttemptReason
                                                                .MERCHANT_NOT_RESPONDING
                                                        )
                                                        .attemptedAt(LocalDate.parse("2019-12-27"))
                                                        .merchandiseDisposition(
                                                            "merchandise_disposition"
                                                        )
                                                        .build()
                                                )
                                                .returnOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseMisrepresentation
                                                        .ReturnOutcome
                                                        .NOT_RETURNED
                                                )
                                                .returned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseMisrepresentation
                                                        .Returned
                                                        .builder()
                                                        .merchantReceivedReturnAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .otherExplanation("other_explanation")
                                                        .returnMethod(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseMisrepresentation
                                                                .Returned
                                                                .ReturnMethod
                                                                .DHL
                                                        )
                                                        .returnedAt(LocalDate.parse("2019-12-27"))
                                                        .trackingNumber("tracking_number")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerMerchandiseNotAsDescribed(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerMerchandiseNotAsDescribed
                                                .builder()
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotAsDescribed
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .returnAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotAsDescribed
                                                        .ReturnAttempted
                                                        .builder()
                                                        .attemptExplanation("attempt_explanation")
                                                        .attemptReason(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotAsDescribed
                                                                .ReturnAttempted
                                                                .AttemptReason
                                                                .MERCHANT_NOT_RESPONDING
                                                        )
                                                        .attemptedAt(LocalDate.parse("2019-12-27"))
                                                        .merchandiseDisposition(
                                                            "merchandise_disposition"
                                                        )
                                                        .build()
                                                )
                                                .returnOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotAsDescribed
                                                        .ReturnOutcome
                                                        .RETURNED
                                                )
                                                .returned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotAsDescribed
                                                        .Returned
                                                        .builder()
                                                        .merchantReceivedReturnAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .otherExplanation("other_explanation")
                                                        .returnMethod(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotAsDescribed
                                                                .Returned
                                                                .ReturnMethod
                                                                .DHL
                                                        )
                                                        .returnedAt(LocalDate.parse("2019-12-27"))
                                                        .trackingNumber("tracking_number")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerMerchandiseNotReceived(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerMerchandiseNotReceived
                                                .builder()
                                                .cancellationOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .CancellationOutcome
                                                        .CARDHOLDER_CANCELLATION_PRIOR_TO_EXPECTED_RECEIPT
                                                )
                                                .cardholderCancellationPriorToExpectedReceipt(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .CardholderCancellationPriorToExpectedReceipt
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .delayed(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .Delayed
                                                        .builder()
                                                        .explanation("explanation")
                                                        .notReturned(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotReceived
                                                                .Delayed
                                                                .NotReturned
                                                                .builder()
                                                                .build()
                                                        )
                                                        .returnAttempted(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotReceived
                                                                .Delayed
                                                                .ReturnAttempted
                                                                .builder()
                                                                .attemptedAt(
                                                                    LocalDate.parse("2019-12-27")
                                                                )
                                                                .build()
                                                        )
                                                        .returnOutcome(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotReceived
                                                                .Delayed
                                                                .ReturnOutcome
                                                                .NOT_RETURNED
                                                        )
                                                        .returned(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerMerchandiseNotReceived
                                                                .Delayed
                                                                .Returned
                                                                .builder()
                                                                .merchantReceivedReturnAt(
                                                                    LocalDate.parse("2019-12-27")
                                                                )
                                                                .returnedAt(
                                                                    LocalDate.parse("2019-12-27")
                                                                )
                                                                .build()
                                                        )
                                                        .build()
                                                )
                                                .deliveredToWrongLocation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .DeliveredToWrongLocation
                                                        .builder()
                                                        .agreedLocation("agreed_location")
                                                        .build()
                                                )
                                                .deliveryIssue(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .DeliveryIssue
                                                        .DELAYED
                                                )
                                                .lastExpectedReceiptAt(
                                                    LocalDate.parse("2019-12-27")
                                                )
                                                .merchantCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .MerchantCancellation
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .noCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerMerchandiseNotReceived
                                                        .NoCancellation
                                                        .builder()
                                                        .build()
                                                )
                                                .purchaseInfoAndExplanation(
                                                    "purchase_info_and_explanation"
                                                )
                                                .build()
                                        )
                                        .consumerNonReceiptOfCash(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerNonReceiptOfCash
                                                .builder()
                                                .build()
                                        )
                                        .consumerOriginalCreditTransactionNotAccepted(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerOriginalCreditTransactionNotAccepted
                                                .builder()
                                                .explanation("explanation")
                                                .reason(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerOriginalCreditTransactionNotAccepted
                                                        .Reason
                                                        .PROHIBITED_BY_LOCAL_LAWS_OR_REGULATION
                                                )
                                                .build()
                                        )
                                        .consumerQualityMerchandise(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerQualityMerchandise
                                                .builder()
                                                .expectedAt(LocalDate.parse("2019-12-27"))
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .notReturned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .NotReturned
                                                        .builder()
                                                        .build()
                                                )
                                                .ongoingNegotiations(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .OngoingNegotiations
                                                        .builder()
                                                        .explanation("explanation")
                                                        .issuerFirstNotifiedAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .startedAt(LocalDate.parse("2019-12-27"))
                                                        .build()
                                                )
                                                .purchaseInfoAndQualityIssue(
                                                    "purchase_info_and_quality_issue"
                                                )
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .returnAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .ReturnAttempted
                                                        .builder()
                                                        .attemptExplanation("attempt_explanation")
                                                        .attemptReason(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerQualityMerchandise
                                                                .ReturnAttempted
                                                                .AttemptReason
                                                                .MERCHANT_NOT_RESPONDING
                                                        )
                                                        .attemptedAt(LocalDate.parse("2019-12-27"))
                                                        .merchandiseDisposition(
                                                            "merchandise_disposition"
                                                        )
                                                        .build()
                                                )
                                                .returnOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .ReturnOutcome
                                                        .NOT_RETURNED
                                                )
                                                .returned(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityMerchandise
                                                        .Returned
                                                        .builder()
                                                        .merchantReceivedReturnAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .otherExplanation("other_explanation")
                                                        .returnMethod(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerQualityMerchandise
                                                                .Returned
                                                                .ReturnMethod
                                                                .DHL
                                                        )
                                                        .returnedAt(LocalDate.parse("2019-12-27"))
                                                        .trackingNumber("tracking_number")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .consumerQualityServices(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerQualityServices
                                                .builder()
                                                .cardholderCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityServices
                                                        .CardholderCancellation
                                                        .builder()
                                                        .acceptedByMerchant(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerQualityServices
                                                                .CardholderCancellation
                                                                .AcceptedByMerchant
                                                                .ACCEPTED
                                                        )
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .cardholderPaidToHaveWorkRedone(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityServices
                                                        .CardholderPaidToHaveWorkRedone
                                                        .DID_NOT_PAY_TO_HAVE_WORK_REDONE
                                                )
                                                .nonFiatCurrencyOrNonFungibleTokenRelatedAndNotMatchingDescription(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityServices
                                                        .NonFiatCurrencyOrNonFungibleTokenRelatedAndNotMatchingDescription
                                                        .NOT_RELATED
                                                )
                                                .ongoingNegotiations(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityServices
                                                        .OngoingNegotiations
                                                        .builder()
                                                        .explanation("explanation")
                                                        .issuerFirstNotifiedAt(
                                                            LocalDate.parse("2019-12-27")
                                                        )
                                                        .startedAt(LocalDate.parse("2019-12-27"))
                                                        .build()
                                                )
                                                .purchaseInfoAndQualityIssue(
                                                    "purchase_info_and_quality_issue"
                                                )
                                                .restaurantFoodRelated(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerQualityServices
                                                        .RestaurantFoodRelated
                                                        .NOT_RELATED
                                                )
                                                .servicesReceivedAt(LocalDate.parse("2019-12-27"))
                                                .build()
                                        )
                                        .consumerServicesMisrepresentation(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerServicesMisrepresentation
                                                .builder()
                                                .cardholderCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesMisrepresentation
                                                        .CardholderCancellation
                                                        .builder()
                                                        .acceptedByMerchant(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerServicesMisrepresentation
                                                                .CardholderCancellation
                                                                .AcceptedByMerchant
                                                                .ACCEPTED
                                                        )
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesMisrepresentation
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .misrepresentationExplanation(
                                                    "misrepresentation_explanation"
                                                )
                                                .purchaseExplanation("purchase_explanation")
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .build()
                                        )
                                        .consumerServicesNotAsDescribed(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerServicesNotAsDescribed
                                                .builder()
                                                .cardholderCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotAsDescribed
                                                        .CardholderCancellation
                                                        .builder()
                                                        .acceptedByMerchant(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ConsumerServicesNotAsDescribed
                                                                .CardholderCancellation
                                                                .AcceptedByMerchant
                                                                .ACCEPTED
                                                        )
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .explanation("explanation")
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotAsDescribed
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .receivedAt(LocalDate.parse("2019-12-27"))
                                                .build()
                                        )
                                        .consumerServicesNotReceived(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ConsumerServicesNotReceived
                                                .builder()
                                                .cancellationOutcome(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotReceived
                                                        .CancellationOutcome
                                                        .CARDHOLDER_CANCELLATION_PRIOR_TO_EXPECTED_RECEIPT
                                                )
                                                .cardholderCancellationPriorToExpectedReceipt(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotReceived
                                                        .CardholderCancellationPriorToExpectedReceipt
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .reason("reason")
                                                        .build()
                                                )
                                                .lastExpectedReceiptAt(
                                                    LocalDate.parse("2019-12-27")
                                                )
                                                .merchantCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotReceived
                                                        .MerchantCancellation
                                                        .builder()
                                                        .canceledAt(LocalDate.parse("2019-12-27"))
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotReceived
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .noCancellation(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ConsumerServicesNotReceived
                                                        .NoCancellation
                                                        .builder()
                                                        .build()
                                                )
                                                .purchaseInfoAndExplanation(
                                                    "purchase_info_and_explanation"
                                                )
                                                .build()
                                        )
                                        .fraud(
                                            CardDispute.Visa.UserSubmission.Chargeback.Fraud
                                                .builder()
                                                .fraudType(
                                                    CardDispute.Visa.UserSubmission.Chargeback.Fraud
                                                        .FraudType
                                                        .LOST
                                                )
                                                .build()
                                        )
                                        .processingError(
                                            CardDispute.Visa.UserSubmission.Chargeback
                                                .ProcessingError
                                                .builder()
                                                .duplicateTransaction(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ProcessingError
                                                        .DuplicateTransaction
                                                        .builder()
                                                        .otherTransactionId("other_transaction_id")
                                                        .build()
                                                )
                                                .errorReason(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ProcessingError
                                                        .ErrorReason
                                                        .DUPLICATE_TRANSACTION
                                                )
                                                .incorrectAmount(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ProcessingError
                                                        .IncorrectAmount
                                                        .builder()
                                                        .expectedAmount(0L)
                                                        .build()
                                                )
                                                .merchantResolutionAttempted(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ProcessingError
                                                        .MerchantResolutionAttempted
                                                        .ATTEMPTED
                                                )
                                                .paidByOtherMeans(
                                                    CardDispute.Visa.UserSubmission.Chargeback
                                                        .ProcessingError
                                                        .PaidByOtherMeans
                                                        .builder()
                                                        .otherFormOfPaymentEvidence(
                                                            CardDispute.Visa.UserSubmission
                                                                .Chargeback
                                                                .ProcessingError
                                                                .PaidByOtherMeans
                                                                .OtherFormOfPaymentEvidence
                                                                .CANCELED_CHECK
                                                        )
                                                        .otherTransactionId("other_transaction_id")
                                                        .build()
                                                )
                                                .build()
                                        )
                                        .build()
                                )
                                .merchantPrearbitrationDecline(
                                    CardDispute.Visa.UserSubmission.MerchantPrearbitrationDecline
                                        .builder()
                                        .reason(
                                            "I do not believe the explanation given by the merchant is valid."
                                        )
                                        .build()
                                )
                                .userPrearbitration(
                                    CardDispute.Visa.UserSubmission.UserPrearbitration.builder()
                                        .categoryChange(
                                            CardDispute.Visa.UserSubmission.UserPrearbitration
                                                .CategoryChange
                                                .builder()
                                                .category(
                                                    CardDispute.Visa.UserSubmission
                                                        .UserPrearbitration
                                                        .CategoryChange
                                                        .Category
                                                        .FRAUD
                                                )
                                                .reason("Based on the response from the merchant.")
                                                .build()
                                        )
                                        .reason(
                                            "I disagree with the explanation given by the merchant."
                                        )
                                        .build()
                                )
                                .build()
                        )
                        .build()
                )
                .win(
                    CardDispute.Win.builder()
                        .wonAt(OffsetDateTime.parse("2020-01-31T23:59:59Z"))
                        .build()
                )
                .withdrawal(
                    CardDispute.Withdrawal.builder()
                        .explanation("The cardholder requested a withdrawal of the dispute.")
                        .build()
                )
                .build()

        val roundtrippedCardDispute =
            jsonMapper.readValue(
                jsonMapper.writeValueAsString(cardDispute),
                jacksonTypeRef<CardDispute>(),
            )

        assertThat(roundtrippedCardDispute).isEqualTo(cardDispute)
    }
}
