// Path: src/main/java/com/github/kokorin/jdbunit/table/Table.java
// public class Table {
//     private final String name;
//     private final List<Column> columns;
//     private final List<Row> rows;
// 
//     public Table(String name, List<Column> columns, List<Row> rows) {
//         Objects.requireNonNull(name);
//         Objects.requireNonNull(columns);
//         Objects.requireNonNull(rows);
// 
//         if (name.isEmpty()) {
//             throw new IllegalArgumentException("Table name must be non empty");
//         }
//         if (columns.isEmpty() && !rows.isEmpty()) {
//             throw new IllegalArgumentException("At least one column is required for non-empty table");
//         }
// 
//         for (Row row : rows) {
//             if (row.getValues().size() != columns.size()) {
//                 throw new IllegalArgumentException("Every row must have value for every column.");
//             }
//         }
// 
//         this.name = name;
//         this.columns = Collections.unmodifiableList(new ArrayList<>(columns));
//         this.rows = Collections.unmodifiableList(new ArrayList<>(rows));
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public List<Column> getColumns() {
//         return columns;
//     }
// 
//     public List<Row> getRows() {
//         return rows;
//     }
// }


import com.github.kokorin.jdbunit.table.Table;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.ListIterator;
import java.util.Objects;
package com.github.kokorin.jdbunit.operation;



public class Delete implements Operation {
    @Override
// Path: src/main/java/com/github/kokorin/jdbunit/table/Table.java
// public class Table {
//     private final String name;
//     private final List<Column> columns;
//     private final List<Row> rows;
// 
//     public Table(String name, List<Column> columns, List<Row> rows) {
//         Objects.requireNonNull(name);
//         Objects.requireNonNull(columns);
//         Objects.requireNonNull(rows);
// 
//         if (name.isEmpty()) {
//             throw new IllegalArgumentException("Table name must be non empty");
//         }
//         if (columns.isEmpty() && !rows.isEmpty()) {
//             throw new IllegalArgumentException("At least one column is required for non-empty table");
//         }
// 
//         for (Row row : rows) {
//             if (row.getValues().size() != columns.size()) {
//                 throw new IllegalArgumentException("Every row must have value for every column.");
//             }
//         }
// 
//         this.name = name;
//         this.columns = Collections.unmodifiableList(new ArrayList<>(columns));
//         this.rows = Collections.unmodifiableList(new ArrayList<>(rows));
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public List<Column> getColumns() {
//         return columns;
//     }
// 
//     public List<Row> getRows() {
//         return rows;
//     }
// }


// Path: src/main/java/com/github/kokorin/jdbunit/operation/Delete.java
import com.github.kokorin.jdbunit.table.Table;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.ListIterator;
import java.util.Objects;

package com.github.kokorin.jdbunit.operation;



public class Delete implements Operation {
    @Override
    public void execute(List<Table> tables, Connection connection) {