anchor.diff:      %%
       FLUs = [FLU || {FLU,_Pid} <- Namez],
       U_UPI_Rs = lists:usort([UPI++Rep ||
  -                              {_Nm,{_Epoch,UPI,Rep,_Down,InnerP}} <- Private2]),
  +                             {_Nm,{_Epoch,UPI,Rep,_Dn,_W,InnerP}} <- Private2]),
       FLU_uses = [{Name, Epoch} ||
  -                   {Name,{Epoch,_UPI,Rep,_Down,InnerP}} <- Private2],
  +                   {Name,{Epoch,_UPI,Rep,_Dn,_W,InnerP}} <- Private2],
  +    Witnesses = hd([Ws ||
  +                   {_Name,{_Epoch,_UPI,Rep,_Dn,Ws,InnerP}} <- Private2]),
  +    HaveWitnesses_p = Witnesses /= [],
       Unanimous_with_all_peers_p =
           lists:all(fun({FLU, UsesEpoch}) ->
  -                          length(
  -                            lists:usort(
  -                              [Epoch || {Name,{Epoch,UPI,Rep,_,_}} <- Private2,
  -                                        lists:member(FLU, UPI) orelse
  -                                        lists:member(FLU, Rep)])) == 1
  -
  +                   WhoInEpoch = [Name ||
  +                                  {Name,{Epoch,_UPI,_Rep,_Dn,_W,I_}}<-Private2,
  +                                  Epoch == UsesEpoch],
  +                   UPI_versions = [UPI ||
  +                               {_Name,{Epoch,UPI,_Rep,_Dn,_W,I_}}<-Private2,
  +                               Epoch == UsesEpoch],
  +                   UPI_versions == [ [] ] % This FLU in minority partition
  +                   orelse
  +                   (length(lists:usort(UPI_versions)) == 1
  +                    andalso
  +                    (lists:sort(hd(UPI_versions)) == lists:sort(WhoInEpoch)
  +                     orelse
  +                     (HaveWitnesses_p andalso
  +                      lists:sort(hd(UPI_versions)) == lists:sort(WhoInEpoch--Witnesses))))
                     end, FLU_uses),
  -    io:format(user, "\nPriv1 ~p agree ~p\n", [lists:sort(Private1), Unanimous_with_all_peers_p]),
  +    %% io:format(user, "\nPriv1 ~P agree ~p\n", [lists:sort(Private1), 10, Unanimous_with_all_peers_p]),
  +
  +    %%io:format(user, "U_UPI_Rs ~p\n", [U_UPI_Rs]),
  +    %%io:format(user, "FLUs ~p\n", [FLUs]),
  +    %%io:format(user, "Unanimous_with_all_peers_p ~p\n", [Unanimous_with_all_peers_p]),
  +    Flat_U_UPI_Rs = lists:flatten(U_UPI_Rs),
       Private1 == Private2 andalso
           %% If not disjoint, then a flu will appear twice in flattented U_UPIs.
  -        lists:sort(lists:flatten(U_UPI_Rs)) == lists:sort(FLUs) andalso
  +        lists:sort(Flat_U_UPI_Rs) == lists:usort(Flat_U_UPI_Rs) andalso
           %% Another property that we want is that for each participant
           %% X mentioned in a UPI or Repairing list of some epoch E that
           %% X is using the same epoch E.
  
positive.code:                             private_projections_are_stable(Namez, DoIt)
                      end, false, lists:seq(0, MaxIters)),
             io:format(user, "\nSweet, private projections are stable\n", []),
             io:format(user, "\t~p\n", [get(stable)]),
             io:format(user, "Rolling sanity check ... ", []),
             MaxFiles = 1*1000,
             PrivProjs = [{Name, begin
  
negative.code:     %% ].
  
      %% [ [{a,b}, {b,a}] ].
  
      [
        [{a,b}, {a,c}], [],
        [{b,a}, {b,c}], [],
        [{c,b}, {c,a}], [],
  
        [{b,a}, {c,a}], [],
        [{a,b}, {c,b}], [],
        [{b,c}, {a,c}]
      ].
  
      %% [ [{a,b},{b,c},{c,a}],
      %%   [{a,b}, {b,a}, {a,c},{c,a}] ].
  