// Path: src/main/java/uk/co/visalia/brightpearl/apiclient/util/StringUtils.java
// public final class StringUtils {
// 
//     private StringUtils() { }
// 
//     public static boolean isEmpty(String string) {
//         return string == null || string.length() == 0;
//     }
// 
//     public static boolean isNotEmpty(String string) {
//         return !isEmpty(string);
//     }
// 
//     public static boolean isBlank(String string) {
//         return string == null || string.trim().length() == 0;
//     }
// 
//     public static boolean isNotBlank(String string) {
//         return !isBlank(string);
//     }
// 
//     public static boolean equals(String lhs, String rhs) {
//         if ((lhs == null) != (rhs == null)) {
//             return false;
//         } else if (lhs == null && rhs == null) {
//             return true;
//         } else {
//             return lhs.equals(rhs);
//         }
//     }
// 
//     public static String join(Collection<String> strings, String separator) {
//         StringBuilder builder = new StringBuilder();
//         for (String string : strings) {
//             if (builder.length() > 0) {
//                 builder.append(separator);
//             }
//             builder.append(string);
//         }
//         return builder.toString();
//     }
// 
// }


import uk.co.visalia.brightpearl.apiclient.util.StringUtils;
import java.io.Serializable;
import java.util.*;
    public static IdSet ids(Integer... ids) {
        return new IdSet(ids);
    }

    /**
     * Initialise an ID set containing a collection of IDs. Additional IDs may be added.
     * @param ids Initial set of IDs to add to the ID set.
     * @return A new ID set containing the given IDs.
     */
    public static IdSet ids(Collection<Integer> ids) {
        return new IdSet(ids);
    }

    /**
     * Initialise an ID set with a single range of IDs. Additional IDs may be added.
     * @param from first ID (inclusive)
     * @param to last ID (inclusive)
     * @return A new ID set for the given range of IDs.
     */
    public static IdSet range(int from, int to) {
        IdSet idSet = new IdSet();
        return idSet.addRange(from, to);
    }

    /**
     * Parse the string representation of an ID set.
     * @param str A string ID set.
     * @return
     */
    public static IdSet parse(String str) {
// Path: src/main/java/uk/co/visalia/brightpearl/apiclient/util/StringUtils.java
// public final class StringUtils {
// 
//     private StringUtils() { }
// 
//     public static boolean isEmpty(String string) {
//         return string == null || string.length() == 0;
//     }
// 
//     public static boolean isNotEmpty(String string) {
//         return !isEmpty(string);
//     }
// 
//     public static boolean isBlank(String string) {
//         return string == null || string.trim().length() == 0;
//     }
// 
//     public static boolean isNotBlank(String string) {
//         return !isBlank(string);
//     }
// 
//     public static boolean equals(String lhs, String rhs) {
//         if ((lhs == null) != (rhs == null)) {
//             return false;
//         } else if (lhs == null && rhs == null) {
//             return true;
//         } else {
//             return lhs.equals(rhs);
//         }
//     }
// 
//     public static String join(Collection<String> strings, String separator) {
//         StringBuilder builder = new StringBuilder();
//         for (String string : strings) {
//             if (builder.length() > 0) {
//                 builder.append(separator);
//             }
//             builder.append(string);
//         }
//         return builder.toString();
//     }
// 
// }


// Path: src/main/java/uk/co/visalia/brightpearl/apiclient/common/IdSet.java
import uk.co.visalia.brightpearl.apiclient.util.StringUtils;
import java.io.Serializable;
import java.util.*;

    public static IdSet ids(Integer... ids) {
        return new IdSet(ids);
    }

    /**
     * Initialise an ID set containing a collection of IDs. Additional IDs may be added.
     * @param ids Initial set of IDs to add to the ID set.
     * @return A new ID set containing the given IDs.
     */
    public static IdSet ids(Collection<Integer> ids) {
        return new IdSet(ids);
    }

    /**
     * Initialise an ID set with a single range of IDs. Additional IDs may be added.
     * @param from first ID (inclusive)
     * @param to last ID (inclusive)
     * @return A new ID set for the given range of IDs.
     */
    public static IdSet range(int from, int to) {
        IdSet idSet = new IdSet();
        return idSet.addRange(from, to);
    }

    /**
     * Parse the string representation of an ID set.
     * @param str A string ID set.
     * @return
     */
    public static IdSet parse(String str) {
        if (StringUtils.isEmpty(str)) {