anchor.diff:  
       true.
   
  +fail3_smoke_test() ->
  +    Nodes = [a,b],
  +    UPI1 = [a,b],
  +    UPI2 = [b,a],
  +    [begin
  +         PsUPI1 = UPI1,
  +         PsUPI2 = UPI2,
  +         P1 = ?MGR:make_projection(2, 1, <<>>, HdNd, Nodes,
  +                                   [], PsUPI1, Nodes -- PsUPI1, []),
  +         P2 = ?MGR:make_projection(3, 2, <<>>, HdNd, Nodes,
  +                                   [], PsUPI2, Nodes -- PsUPI2, []),
  +         Res = case projection_transition_is_sane(P1, P2) of
  +                   true -> true;
  +                   _    -> false
  +               end,
  +         {Res, HdNd, PsUPI1, PsUPI2} = {false, HdNd, PsUPI1, PsUPI2}
  +     end || HdNd <- Nodes],
  +
  +    true.
  +
   %% aaa_smoke_test() ->
   %%     L = [a,b,c,d],
   %%     Cs = combinations(L),
  
positive.code:                                                  [], PsUPI1, Nodes -- PsUPI1, []),
                         P2 = ?MGR:make_projection(3, 2, <<>>, HdNd, Nodes,
                                                   [], PsUPI2, Nodes -- PsUPI2, []),
                         Res = case (catch projection_transition_is_sane(P1, P2)) of
                                   true -> true;
                                   _    -> false
                               end,
                         {Res, UPI1, UPI2}
                     end || HdNd <- Nodes,
                            {UPI1,UPI2} <- Combos,
                            %% We assume that the author appears in any 
                            UPI1 /= [],
                            UPI2 /= [],
                            %% HdNd is the author for all of these
  
negative.code:                           lists:member(HdNd, UPI2),
                            PsUPI1 <- perms(UPI1),
                            PsUPI2 <- perms(UPI2)],
               OKs = [begin
                          {UPI1,UPI2}
                      end || {true, UPI1, UPI2} <- Rs],
               io:format(user, "OKs = ~p\n", [lists:usort(OKs)]),
               Tab = ets:new(count, [public, set, {keypos, 1}]),
               [ets:insert(Tab, {Transition, 0}) || Transition <- OKs],
               true = eqc:quickcheck(
                    eqc:numtests(3500,
                                 ?QC_OUT(prop_calc_projection(Nodes, Tab)))),
               NotCounted = [Transition || {Transition, 0} <- ets:tab2list(Tab)],
               _Counted = [X || {_, N}=X <- ets:tab2list(Tab),
                               N > 0],
               timer:sleep(100),
               io:format(user, "\tNotCounted = ~p\n", [NotCounted]),
               io:format(user, "\tOKs length = ~p\n", [length(OKs)]),
               io:format(user, "\tTransitions hit = ~p\n", [length(OKs) - length(NotCounted)]),
               %% io:format(user, "\tTransitions = ~p\n", [lists:sort(_Counted)]),
               io:format(user, "\tNotCounted length = ~p\n", [length(NotCounted)]),
               ok
       end}.
  
  