@@ -0,0 +1,1484 @@
+package org.spoofax.interpreter.library.ssl;%0A%0Aimport io.usethesource.capsule.Map;%0Aimport io.usethesource.capsule.Set;%0A%0Aimport org.spoofax.interpreter.core.IContext;%0Aimport org.spoofax.interpreter.core.InterpreterException;%0Aimport org.spoofax.interpreter.library.AbstractPrimitive;%0Aimport org.spoofax.interpreter.stratego.Strategy;%0Aimport org.spoofax.interpreter.terms.IStrategoTerm;%0Aimport java.util.Iterator;%0A%0Apublic class SSL_immutable_map_intersect_set extends AbstractPrimitive %7B%0A%0A    protected SSL_immutable_map_intersect_set() %7B%0A        super(%22SSL_immutable_map_intersect_set%22, 1, 1);%0A    %7D%0A%0A    @Override%0A    public boolean call(IContext env, Strategy%5B%5D sargs, IStrategoTerm%5B%5D targs)%0A            throws InterpreterException %7B%0A        if(!(env.current() instanceof StrategoImmutableMap)) %7B%0A            return false;%0A        %7D%0A        if(!(targs%5B0%5D instanceof StrategoImmutableSet)) %7B%0A            return false;%0A        %7D%0A%0A        final Map.Transient%3CIStrategoTerm, IStrategoTerm%3E one = ((StrategoImmutableMap) env.current()).backingMap.asTransient();%0A        final Set.Immutable%3CIStrategoTerm%3E other = ((StrategoImmutableSet) targs%5B0%5D).backingSet;%0A        for(Iterator%3CIStrategoTerm%3E iterator = one.keyIterator(); iterator.hasNext(); ) %7B%0A            IStrategoTerm key = iterator.next();%0A            if(!other.contains(key)) %7B%0A                iterator.remove();%0A            %7D%0A        %7D%0A%0A        env.setCurrent(new StrategoImmutableMap(one.freeze()));%0A        return true;%0A    %7D%0A%7D%0A

Add map masking operation: intersecting with a set