anchor.diff:  add_mask_to_flags(Flags, [Im|M], I, L) when I > Im ->
     add_mask_to_flags(Flags, M, I, [Im|L]);
   add_mask_to_flags(Flags, [_|M], _I, L) ->
  -  {lists:umerge(M, Flags), lists:reverse(L)}.
  +  {umerge_mask(Flags, M), lists:reverse(L)}.
  +
  +umerge_mask(every_i, _F) ->
  +  every_i;
  +umerge_mask(Is, F) ->
  +  lists:umerge(Is, F).
   
   get_mask(V, Masks) ->
     case maps:find(V, Masks) of
  
positive.code:   List1 = [C || C <- List, is_simple_constraint(C)],
    %% Just an assert.
    [] = [C || #constraint{} = C <- List1],
    Expanded = lists:flatten([expand_to_conjunctions(C)
  			    || #constraint_list{} = C <- List]),
    ReturnList = Expanded ++ List1,
    if length(ReturnList) > ?DISJ_NORM_FORM_LIMIT -> throw(too_many_disj);
       true -> ReturnList
  
negative.code:   end;
  v2_solve_disj([], [], _I, _Map, V2State, UL, MapL, Eval, Uneval, Failed) ->
    {ok, V2State, lists:reverse(Eval), UL, MapL, lists:reverse(Uneval), Failed};
  v2_solve_disj(every_i, Cs, I, Map, V2State, UL, MapL, Eval, Uneval, Failed) ->
    NewIs = case Cs of
              [] -> [];
              _ -> [I|every_i]
            end,
    v2_solve_disj(NewIs, Cs, I, Map, V2State, UL, MapL, Eval, Uneval, Failed);
  v2_solve_disj(Is, [C|Cs], I, Map, V2State, UL, MapL, Eval, Uneval0, Failed) ->
    Uneval = [{I,C#constraint_list.id} ||
               not is_failed_list(C, V2State)] ++ Uneval0,
  