// Path: library/src/main/java/org/mariotaku/sqliteqb/library/OnConflict.java
// public enum OnConflict {
//     ROLLBACK("ROLLBACK"), ABORT("ABORT"), REPLACE("REPLACE"), FAIL("FAIL"), IGNORE("IGNORE");
//     private final String action;
// 
//     OnConflict(final String action) {
//         this.action = action;
//     }
// 
//     public String getAction() {
//         return action;
//     }
// }
// 
// Path: library/src/main/java/org/mariotaku/sqliteqb/library/SQLQuery.java
// public interface SQLQuery extends SQLLang {
// }
// 
// Path: library/src/main/java/org/mariotaku/sqliteqb/library/Utils.java
// public class Utils {
// 
//     public static String toString(final Object[] array, final char token, final boolean includeSpace) {
//         final StringBuilder builder = new StringBuilder();
//         final int length = array.length;
//         for (int i = 0; i < length; i++) {
//             final String string = objectToString(array[i]);
//             if (string != null) {
//                 if (i > 0) {
//                     builder.append(includeSpace ? token + " " : token);
//                 }
//                 builder.append(string);
//             }
//         }
//         return builder.toString();
//     }
// 
//     public static String toStringForSQL(final int size) {
//         final StringBuilder builder = new StringBuilder();
//         for (int i = 0; i < size; i++) {
//             if (i > 0) {
//                 builder.append(',');
//             }
//             builder.append('?');
//         }
//         return builder.toString();
//     }
// 
//     private static String objectToString(Object o) {
//         if (o instanceof SQLLang)
//             return ((SQLLang) o).getSQL();
//         return o != null ? o.toString() : null;
//     }
// 
//     public static String[] toStringArray(Object[] array) {
//         final String[] strings = new String[array.length];
//         final int length = array.length;
//         for (int i = 0; i < length; i++) {
//             strings[i] = objectToString(array[i]);
//         }
//         return strings;
//     }
// }


import org.mariotaku.sqliteqb.library.OnConflict;
import org.mariotaku.sqliteqb.library.SQLQuery;
import org.mariotaku.sqliteqb.library.Utils;
        @Override
        public String buildSQL() {
            return build().getSQL();
        }

        public Builder columns(final String[] columns) {
            checkNotBuilt();
            query.setColumns(columns);
            return this;
        }

        public Builder values(final String[] values) {
            checkNotBuilt();
            query.setValues(values);
            return this;
        }

        public Builder values(final String values) {
            checkNotBuilt();
            query.setValues(values);
            return this;
        }

        public Builder insertInto(final OnConflict onConflict, final String table) {
            checkNotBuilt();
            query.setOnConflict(onConflict);
            query.setTable(table);
            return this;
        }

// Path: library/src/main/java/org/mariotaku/sqliteqb/library/OnConflict.java
// public enum OnConflict {
//     ROLLBACK("ROLLBACK"), ABORT("ABORT"), REPLACE("REPLACE"), FAIL("FAIL"), IGNORE("IGNORE");
//     private final String action;
// 
//     OnConflict(final String action) {
//         this.action = action;
//     }
// 
//     public String getAction() {
//         return action;
//     }
// }
// 
// Path: library/src/main/java/org/mariotaku/sqliteqb/library/SQLQuery.java
// public interface SQLQuery extends SQLLang {
// }
// 
// Path: library/src/main/java/org/mariotaku/sqliteqb/library/Utils.java
// public class Utils {
// 
//     public static String toString(final Object[] array, final char token, final boolean includeSpace) {
//         final StringBuilder builder = new StringBuilder();
//         final int length = array.length;
//         for (int i = 0; i < length; i++) {
//             final String string = objectToString(array[i]);
//             if (string != null) {
//                 if (i > 0) {
//                     builder.append(includeSpace ? token + " " : token);
//                 }
//                 builder.append(string);
//             }
//         }
//         return builder.toString();
//     }
// 
//     public static String toStringForSQL(final int size) {
//         final StringBuilder builder = new StringBuilder();
//         for (int i = 0; i < size; i++) {
//             if (i > 0) {
//                 builder.append(',');
//             }
//             builder.append('?');
//         }
//         return builder.toString();
//     }
// 
//     private static String objectToString(Object o) {
//         if (o instanceof SQLLang)
//             return ((SQLLang) o).getSQL();
//         return o != null ? o.toString() : null;
//     }
// 
//     public static String[] toStringArray(Object[] array) {
//         final String[] strings = new String[array.length];
//         final int length = array.length;
//         for (int i = 0; i < length; i++) {
//             strings[i] = objectToString(array[i]);
//         }
//         return strings;
//     }
// }


// Path: library/src/main/java/org/mariotaku/sqliteqb/library/query/SQLInsertQuery.java
import org.mariotaku.sqliteqb.library.OnConflict;
import org.mariotaku.sqliteqb.library.SQLQuery;
import org.mariotaku.sqliteqb.library.Utils;

        @Override
        public String buildSQL() {
            return build().getSQL();
        }

        public Builder columns(final String[] columns) {
            checkNotBuilt();
            query.setColumns(columns);
            return this;
        }

        public Builder values(final String[] values) {
            checkNotBuilt();
            query.setValues(values);
            return this;
        }

        public Builder values(final String values) {
            checkNotBuilt();
            query.setValues(values);
            return this;
        }

        public Builder insertInto(final OnConflict onConflict, final String table) {
            checkNotBuilt();
            query.setOnConflict(onConflict);
            query.setTable(table);
            return this;
        }

        public Builder insertInto(final String table) {