// Path: src/main/java/org/killbill/billing/client/model/gen/Duration.java
// public class Duration {
// 
//     private TimeUnit unit = null;
// 
//     private Integer number = null;
// 
// 
//     public Duration() {
//     }
// 
//     public Duration(final TimeUnit unit,
//                      final Integer number) {
//         this.unit = unit;
//         this.number = number;
// 
//     }
// 
// 
//     public Duration setUnit(final TimeUnit unit) {
//         this.unit = unit;
//         return this;
//     }
// 
//     public TimeUnit getUnit() {
//         return unit;
//     }
// 
//     public Duration setNumber(final Integer number) {
//         this.number = number;
//         return this;
//     }
// 
//     public Integer getNumber() {
//         return number;
//     }
// 
//     @Override
//     public boolean equals(java.lang.Object o) {
//         if (this == o) {
//             return true;
//         }
//         if (o == null || getClass() != o.getClass()) {
//             return false;
//         }
//         Duration duration = (Duration) o;
//         return Objects.equals(this.unit, duration.unit) &&
//             Objects.equals(this.number, duration.number);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(unit,
//             number);
//     }
// 
//     @Override
//     public String toString() {
//         StringBuilder sb = new StringBuilder();
//         sb.append("class Duration {\n");
//         
//         sb.append("    unit: ").append(toIndentedString(unit)).append("\n");
//         sb.append("    number: ").append(toIndentedString(number)).append("\n");
//         sb.append("}");
//         return sb.toString();
//     }
// 
//     /**
//      * Convert the given object to string with each line indented by 4 spaces
//      * (except the first line).
//      */
//     private String toIndentedString(java.lang.Object o) {
//         if (o == null) {
//             return "null";
//         }
//         return o.toString().replace("\n", "\n    ");
//     }
// }
// 
// Path: src/main/java/org/killbill/billing/client/model/KillBillObject.java
// public abstract class KillBillObject {
// 
//     protected List<AuditLog> auditLogs;
// 
//     public KillBillObject() {
//         this(null);
//     }
// 
//     public KillBillObject(@Nullable final List<AuditLog> auditLogs) {
//         this.auditLogs = auditLogs;
//     }
// 
//     public List<AuditLog> getAuditLogs() {
//         return auditLogs;
//     }
// 
//     public void setAuditLogs(final List<AuditLog> auditLogs) {
//         this.auditLogs = auditLogs;
//     }
// 
//     @Override
//     public boolean equals(final Object o) {
//         if (this == o) {
//             return true;
//         }
//         if (!(o instanceof KillBillObject)) {
//             return false;
//         }
//         final KillBillObject that = (KillBillObject) o;
//         return Objects.equals(auditLogs, that.auditLogs);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(auditLogs);
//     }
// }


import org.killbill.billing.client.model.KillBillObject;
import java.util.Objects;
import java.util.Arrays;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.killbill.billing.client.model.gen.Duration;
import org.killbill.billing.payment.api.PaymentResponse;
import org.killbill.billing.util.tag.ControlTagType;

    public OverdueCondition() {
    }

    public OverdueCondition(final Duration timeSinceEarliestUnpaidInvoiceEqualsOrExceeds,
                     final ControlTagType controlTagInclusion,
                     final ControlTagType controlTagExclusion,
                     final Integer numberOfUnpaidInvoicesEqualsOrExceeds,
                     final List<PaymentResponse> responseForLastFailedPayment,
                     final BigDecimal totalUnpaidInvoiceBalanceEqualsOrExceeds) {
        this.timeSinceEarliestUnpaidInvoiceEqualsOrExceeds = timeSinceEarliestUnpaidInvoiceEqualsOrExceeds;
        this.controlTagInclusion = controlTagInclusion;
        this.controlTagExclusion = controlTagExclusion;
        this.numberOfUnpaidInvoicesEqualsOrExceeds = numberOfUnpaidInvoicesEqualsOrExceeds;
        this.responseForLastFailedPayment = responseForLastFailedPayment;
        this.totalUnpaidInvoiceBalanceEqualsOrExceeds = totalUnpaidInvoiceBalanceEqualsOrExceeds;

    }


    public OverdueCondition setTimeSinceEarliestUnpaidInvoiceEqualsOrExceeds(final Duration timeSinceEarliestUnpaidInvoiceEqualsOrExceeds) {
        this.timeSinceEarliestUnpaidInvoiceEqualsOrExceeds = timeSinceEarliestUnpaidInvoiceEqualsOrExceeds;
        return this;
    }

    public Duration getTimeSinceEarliestUnpaidInvoiceEqualsOrExceeds() {
        return timeSinceEarliestUnpaidInvoiceEqualsOrExceeds;
    }

    public OverdueCondition setControlTagInclusion(final ControlTagType controlTagInclusion) {
// Path: src/main/java/org/killbill/billing/client/model/gen/Duration.java
// public class Duration {
// 
//     private TimeUnit unit = null;
// 
//     private Integer number = null;
// 
// 
//     public Duration() {
//     }
// 
//     public Duration(final TimeUnit unit,
//                      final Integer number) {
//         this.unit = unit;
//         this.number = number;
// 
//     }
// 
// 
//     public Duration setUnit(final TimeUnit unit) {
//         this.unit = unit;
//         return this;
//     }
// 
//     public TimeUnit getUnit() {
//         return unit;
//     }
// 
//     public Duration setNumber(final Integer number) {
//         this.number = number;
//         return this;
//     }
// 
//     public Integer getNumber() {
//         return number;
//     }
// 
//     @Override
//     public boolean equals(java.lang.Object o) {
//         if (this == o) {
//             return true;
//         }
//         if (o == null || getClass() != o.getClass()) {
//             return false;
//         }
//         Duration duration = (Duration) o;
//         return Objects.equals(this.unit, duration.unit) &&
//             Objects.equals(this.number, duration.number);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(unit,
//             number);
//     }
// 
//     @Override
//     public String toString() {
//         StringBuilder sb = new StringBuilder();
//         sb.append("class Duration {\n");
//         
//         sb.append("    unit: ").append(toIndentedString(unit)).append("\n");
//         sb.append("    number: ").append(toIndentedString(number)).append("\n");
//         sb.append("}");
//         return sb.toString();
//     }
// 
//     /**
//      * Convert the given object to string with each line indented by 4 spaces
//      * (except the first line).
//      */
//     private String toIndentedString(java.lang.Object o) {
//         if (o == null) {
//             return "null";
//         }
//         return o.toString().replace("\n", "\n    ");
//     }
// }
// 
// Path: src/main/java/org/killbill/billing/client/model/KillBillObject.java
// public abstract class KillBillObject {
// 
//     protected List<AuditLog> auditLogs;
// 
//     public KillBillObject() {
//         this(null);
//     }
// 
//     public KillBillObject(@Nullable final List<AuditLog> auditLogs) {
//         this.auditLogs = auditLogs;
//     }
// 
//     public List<AuditLog> getAuditLogs() {
//         return auditLogs;
//     }
// 
//     public void setAuditLogs(final List<AuditLog> auditLogs) {
//         this.auditLogs = auditLogs;
//     }
// 
//     @Override
//     public boolean equals(final Object o) {
//         if (this == o) {
//             return true;
//         }
//         if (!(o instanceof KillBillObject)) {
//             return false;
//         }
//         final KillBillObject that = (KillBillObject) o;
//         return Objects.equals(auditLogs, that.auditLogs);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(auditLogs);
//     }
// }


// Path: src/main/java/org/killbill/billing/client/model/gen/OverdueCondition.java
import org.killbill.billing.client.model.KillBillObject;
import java.util.Objects;
import java.util.Arrays;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.killbill.billing.client.model.gen.Duration;
import org.killbill.billing.payment.api.PaymentResponse;
import org.killbill.billing.util.tag.ControlTagType;


    public OverdueCondition() {
    }

    public OverdueCondition(final Duration timeSinceEarliestUnpaidInvoiceEqualsOrExceeds,
                     final ControlTagType controlTagInclusion,
                     final ControlTagType controlTagExclusion,
                     final Integer numberOfUnpaidInvoicesEqualsOrExceeds,
                     final List<PaymentResponse> responseForLastFailedPayment,
                     final BigDecimal totalUnpaidInvoiceBalanceEqualsOrExceeds) {
        this.timeSinceEarliestUnpaidInvoiceEqualsOrExceeds = timeSinceEarliestUnpaidInvoiceEqualsOrExceeds;
        this.controlTagInclusion = controlTagInclusion;
        this.controlTagExclusion = controlTagExclusion;
        this.numberOfUnpaidInvoicesEqualsOrExceeds = numberOfUnpaidInvoicesEqualsOrExceeds;
        this.responseForLastFailedPayment = responseForLastFailedPayment;
        this.totalUnpaidInvoiceBalanceEqualsOrExceeds = totalUnpaidInvoiceBalanceEqualsOrExceeds;

    }


    public OverdueCondition setTimeSinceEarliestUnpaidInvoiceEqualsOrExceeds(final Duration timeSinceEarliestUnpaidInvoiceEqualsOrExceeds) {
        this.timeSinceEarliestUnpaidInvoiceEqualsOrExceeds = timeSinceEarliestUnpaidInvoiceEqualsOrExceeds;
        return this;
    }

    public Duration getTimeSinceEarliestUnpaidInvoiceEqualsOrExceeds() {
        return timeSinceEarliestUnpaidInvoiceEqualsOrExceeds;
    }

    public OverdueCondition setControlTagInclusion(final ControlTagType controlTagInclusion) {
        this.controlTagInclusion = controlTagInclusion;