// Path: src/main/java/javafixes/collection/CollectionUtil.java
// @SafeVarargs
// public static <T> ArrayList<T> newList(T... values) {
//     ArrayList<T> list = new ArrayList<T>(values.length);
//     Collections.addAll(list, values);
//     return list;
// }


import java.util.Collection;
import java.util.List;
import static java.util.Arrays.asList;
import static javafixes.collection.CollectionUtil.newList;
package javafixes.test;



public class CollectionUtil {

    @SafeVarargs
    public static <T, CT extends Collection<T>> CT removeFrom(CT values, T... valuesToRemove) {
        values.removeAll(asList(valuesToRemove));
        return values;
    }

    @SafeVarargs
    public static <T> List<T> removeFrom(T[] values, T... valuesToRemove) {
// Path: src/main/java/javafixes/collection/CollectionUtil.java
// @SafeVarargs
// public static <T> ArrayList<T> newList(T... values) {
//     ArrayList<T> list = new ArrayList<T>(values.length);
//     Collections.addAll(list, values);
//     return list;
// }


// Path: src/test/java/javafixes/test/CollectionUtil.java
import java.util.Collection;
import java.util.List;
import static java.util.Arrays.asList;
import static javafixes.collection.CollectionUtil.newList;

package javafixes.test;



public class CollectionUtil {

    @SafeVarargs
    public static <T, CT extends Collection<T>> CT removeFrom(CT values, T... valuesToRemove) {
        values.removeAll(asList(valuesToRemove));
        return values;
    }

    @SafeVarargs
    public static <T> List<T> removeFrom(T[] values, T... valuesToRemove) {
        return removeFrom(newList(values), valuesToRemove);