// Path: src/main/java/ch/codebulb/lambdaomega/L.java
// public static <T> L<T> l() {
//     return new L<>(new ArrayList<>());
// }
// 
// Path: src/main/java/ch/codebulb/lambdaomega/L.java
// public static <T> List<T> list(T... ts) {
//     return l(ts).l;
// }
// 
// Path: src/main/java/ch/codebulb/lambdaomega/M.java
// public static <K, V> E<K, V> e(K k, V v) {
//     return new E(k, v);
// }
// 
// Path: src/main/java/ch/codebulb/lambdaomega/M.java
// public static M m() {
//     return m(new LinkedHashMap<>());
// }
// 
// Path: src/main/java/ch/codebulb/lambdaomega/S.java
// public static <T> Set<T> set(T... ts) {
//     return C.toSet(ts);
// }
// 
// Path: src/test/java/ch/codebulb/lambdaomega/TestUtil.java
// public static final Map<String, Integer> EXPECTED_MAP = new LinkedHashMap<>();
// 
// Path: src/test/java/ch/codebulb/lambdaomega/TestUtil.java
// public static <T> void assertEquals(T expected, T... actual) {
//     Arrays.stream(actual).forEach(it -> Assert.assertEquals(expected, it));
// }


import static ch.codebulb.lambdaomega.L.l;
import static ch.codebulb.lambdaomega.L.list;
import static ch.codebulb.lambdaomega.M.e;
import static ch.codebulb.lambdaomega.M.m;
import static ch.codebulb.lambdaomega.S.set;
import static ch.codebulb.lambdaomega.TestUtil.EXPECTED_MAP;
import static ch.codebulb.lambdaomega.TestUtil.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
        assertEquals(EXPECTED_MAP, m(Number.class).AddAll(list(e("a", 0), e("b", 1), e("c", 2))).m);
        assertEquals(EXPECTED_MAP, m(Number.class).A(list(e("a", 0), e("b", 1), e("c", 2))).m);
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m(Number.class).addAll(list(e("a", 0), e("b", 1), e("c", 2))));
        
        assertEquals(EXPECTED_MAP, m(Number.class).AddAll(list(e("a", 0), e("b", 1)), list(e("c", 2))).m);
        assertEquals(EXPECTED_MAP, m(Number.class).A(list(e("a", 0), e("b", 1)), list(e("c", 2))).m);
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m(Number.class).addAll(list(e("a", 0), e("b", 1)), list(e("c", 2))));
        
        // Add all L entries
        assertEquals(EXPECTED_MAP, m(Number.class).AddAll(l(e("a", 0), e("b", 1), e("c", 2))).m);
        assertEquals(EXPECTED_MAP, m(Number.class).A(l(e("a", 0), e("b", 1), e("c", 2))).m);
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m(Number.class).addAll(l(e("a", 0), e("b", 1), e("c", 2))));
        
        assertEquals(EXPECTED_MAP, m(Number.class).AddAll(l(e("a", 0), e("b", 1)), l(e("c", 2))).m);
        assertEquals(EXPECTED_MAP, m(Number.class).A(l(e("a", 0), e("b", 1)), l(e("c", 2))).m);
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m(Number.class).addAll(l(e("a", 0), e("b", 1)), l(e("c", 2))));
    }
    
    @Test
    public void testRemove() {
        // Remove individual entries
        assertEquals(EXPECTED_MAP, m("a", 0).i("b", 1).i("c", 2).i("d", 2).Remove(e("d", 2)).m);
        assertEquals(EXPECTED_MAP, m("a", 0).i("b", 1).i("c", 2).i("d", 2).r(e("d", 2)).m);
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m("a", 0).i("b", 1).i("c", 2).i("d", 2).remove(e("d", 2)));
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m("a", 0).i("b", 1).i("c", 2).remove(e("c", 3)));
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m("a", 0).i("b", 1).i("c", 2).remove(e("d", 2)));
        
        
        // Remove all entries
        M<String, Integer> removeMap = m("a", 0).i("b", 1).i("c", 2).i("d", 2).i("e", 2).i("f", 2);
// Path: src/main/java/ch/codebulb/lambdaomega/L.java
// public static <T> L<T> l() {
//     return new L<>(new ArrayList<>());
// }
// 
// Path: src/main/java/ch/codebulb/lambdaomega/L.java
// public static <T> List<T> list(T... ts) {
//     return l(ts).l;
// }
// 
// Path: src/main/java/ch/codebulb/lambdaomega/M.java
// public static <K, V> E<K, V> e(K k, V v) {
//     return new E(k, v);
// }
// 
// Path: src/main/java/ch/codebulb/lambdaomega/M.java
// public static M m() {
//     return m(new LinkedHashMap<>());
// }
// 
// Path: src/main/java/ch/codebulb/lambdaomega/S.java
// public static <T> Set<T> set(T... ts) {
//     return C.toSet(ts);
// }
// 
// Path: src/test/java/ch/codebulb/lambdaomega/TestUtil.java
// public static final Map<String, Integer> EXPECTED_MAP = new LinkedHashMap<>();
// 
// Path: src/test/java/ch/codebulb/lambdaomega/TestUtil.java
// public static <T> void assertEquals(T expected, T... actual) {
//     Arrays.stream(actual).forEach(it -> Assert.assertEquals(expected, it));
// }


// Path: src/test/java/ch/codebulb/lambdaomega/MBaseSequentialTest.java
import static ch.codebulb.lambdaomega.L.l;
import static ch.codebulb.lambdaomega.L.list;
import static ch.codebulb.lambdaomega.M.e;
import static ch.codebulb.lambdaomega.M.m;
import static ch.codebulb.lambdaomega.S.set;
import static ch.codebulb.lambdaomega.TestUtil.EXPECTED_MAP;
import static ch.codebulb.lambdaomega.TestUtil.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;

        assertEquals(EXPECTED_MAP, m(Number.class).AddAll(list(e("a", 0), e("b", 1), e("c", 2))).m);
        assertEquals(EXPECTED_MAP, m(Number.class).A(list(e("a", 0), e("b", 1), e("c", 2))).m);
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m(Number.class).addAll(list(e("a", 0), e("b", 1), e("c", 2))));
        
        assertEquals(EXPECTED_MAP, m(Number.class).AddAll(list(e("a", 0), e("b", 1)), list(e("c", 2))).m);
        assertEquals(EXPECTED_MAP, m(Number.class).A(list(e("a", 0), e("b", 1)), list(e("c", 2))).m);
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m(Number.class).addAll(list(e("a", 0), e("b", 1)), list(e("c", 2))));
        
        // Add all L entries
        assertEquals(EXPECTED_MAP, m(Number.class).AddAll(l(e("a", 0), e("b", 1), e("c", 2))).m);
        assertEquals(EXPECTED_MAP, m(Number.class).A(l(e("a", 0), e("b", 1), e("c", 2))).m);
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m(Number.class).addAll(l(e("a", 0), e("b", 1), e("c", 2))));
        
        assertEquals(EXPECTED_MAP, m(Number.class).AddAll(l(e("a", 0), e("b", 1)), l(e("c", 2))).m);
        assertEquals(EXPECTED_MAP, m(Number.class).A(l(e("a", 0), e("b", 1)), l(e("c", 2))).m);
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m(Number.class).addAll(l(e("a", 0), e("b", 1)), l(e("c", 2))));
    }
    
    @Test
    public void testRemove() {
        // Remove individual entries
        assertEquals(EXPECTED_MAP, m("a", 0).i("b", 1).i("c", 2).i("d", 2).Remove(e("d", 2)).m);
        assertEquals(EXPECTED_MAP, m("a", 0).i("b", 1).i("c", 2).i("d", 2).r(e("d", 2)).m);
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m("a", 0).i("b", 1).i("c", 2).i("d", 2).remove(e("d", 2)));
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m("a", 0).i("b", 1).i("c", 2).remove(e("c", 3)));
        assertEquals(set(e("a", 0), e("b", 1), e("c", 2)), m("a", 0).i("b", 1).i("c", 2).remove(e("d", 2)));
        
        
        // Remove all entries
        M<String, Integer> removeMap = m("a", 0).i("b", 1).i("c", 2).i("d", 2).i("e", 2).i("f", 2);
        assertEquals(EXPECTED_MAP, removeMap.RemoveAll(list(e("d", 2)), list(e("e", 2), e("f", 2))).m);