anchor.diff:                  end,
               lists:foldl(Fold, false, Keys)
       end;
  +
  +dependent_ets({insert, _Details1},
  +              {insert, _Details2}, ?SYMMETRIC) ->
  +    false;
  +
  +%%==============================================================================
  +
   dependent_ets({insert_new, [_, _, _, _, _, false]},
                 {insert_new, [_, _, _, _, _, false]}, ?SYMMETRIC) ->
       false;
  +
   dependent_ets({insert_new, [T, _, Keys1, KP, _Objects1, _Status1]},
                 {insert_new, [T, _, Keys2, KP, _Objects2, _Status2]},
                 ?SYMMETRIC) ->
       ordsets:intersection(Keys1, Keys2) =/= [];
  +
  +dependent_ets({insert_new, _Details1},
  +              {insert_new, _Details2}, ?SYMMETRIC) ->
  +    false;
  +
  +%%==============================================================================
  +
   dependent_ets({insert_new, [T, _, Keys1, KP, _Objects1, _Status1]},
  -              {insert, [T, _, Keys2, KP, _Objects2, true]}, _AllowSwap) ->
  +              {    insert, [T, _, Keys2, KP, _Objects2,     true]},
  +              _AllowSwap) ->
       ordsets:intersection(Keys1, Keys2) =/= [];
  +
  +dependent_ets({insert_new, _Details1},
  +              {    insert, _Details2},
  +              _AllowSwap) ->
  +    false;
  +
  +%%==============================================================================
  +
   dependent_ets({Insert, [T, _, Keys, _KP, _Objects1, true]},
                 {lookup, [T, _, K]}, _AllowSwap)
     when Insert =:= insert; Insert =:= insert_new ->
       ordsets:is_element(K, Keys);
  +
  +dependent_ets({Insert, _Details1},
  +              {lookup, _Details2}, _AllowSwap)
  +  when Insert =:= insert; Insert =:= insert_new ->
  +    false;
  +
  +%%==============================================================================
  +
  +dependent_ets({lookup, _Details1},
  +              {lookup, _Details2}, ?SYMMETRIC) ->
  +    false;
  +
  +%%==============================================================================
  +
   dependent_ets({delete, [T, _]}, {_, [T|_]}, _AllowSwap) ->
       true;
  +
  +dependent_ets({delete, _Details1}, { _, _Details2}, _AllowSwap) ->
  +    false;
  +
  +%%==============================================================================
  +
   dependent_ets({new, [_Tid1, Name, Options1]},
                 {new, [_Tid2, Name, Options2]}, ?SYMMETRIC) ->
       lists:member(named_table, Options1) andalso
           lists:member(named_table, Options2);
  +
  +%%==============================================================================
  +
  +dependent_ets({ new, _Details1},
  +              {_Any, _Details2}, _AllowSwap) ->
  +    false;
  +
  +%%==============================================================================
  +
   dependent_ets(Op1, Op2, ?ALLOW_SWAP) ->
  -    case independent_ets(Op1, Op2) of
  -        true -> false;
  -        maybe -> dependent_ets(Op2, Op1, ?DONT_ALLOW_SWAP)
  -    end;
  +    dependent_ets(Op2, Op1, ?DONT_ALLOW_SWAP);
   dependent_ets(Op1, Op2, ?DONT_ALLOW_SWAP) ->
  -    case independent_ets(Op1, Op2) of
  -        true -> false;
  -        maybe -> false %% This should be changed to true.
  -    end.
  -
  --spec independent_ets(term(), term()) -> 'true' | 'maybe'.
  -
  -independent_ets({_Tag1, _}, {_Tag2, _}) ->
  -    maybe.
  +    concuerror_log:log("Not certainly independent (ETS):\n ~p\n ~p\n",
  +                       [Op1, Op2]),
  +    true.
  
positive.code:           _CheckMsg, ?SYMMETRIC) ->
      dependent_ets(Op1, Op2);
  
  %% Registering a table with the same name as an existing one.
  dependent({_Lid1, { ets, {   new,           [_Table, Name, Options]}}, _Msgs1},
            {_Lid2, {exit, {normal, {{_Heirs, Tables}, _Name, _Links}}}, _Msgs2},
  
negative.code: -define(      CHECK_MSG, true).
  -define(     ALLOW_SWAP, true).
  -define(DONT_ALLOW_SWAP, false).
  -define(ONLY_AFTER_SWAP, false).
  -define( DONT_CHECK_MSG, false).
  
  -spec dependent(concuerror_sched:transition(),
  