anchor.diff:      projection_transition_is_sane(P1, P2, RelativeToServer, false).
   
   projection_transition_is_sane(P1, P2, RelativeToServer, RetrospectiveP) ->
  +    put(why2, []),
       case projection_transition_is_sane_with_si_epoch(
              P1, P2, RelativeToServer, RetrospectiveP) of
           true ->
  
positive.code:                 InnerInfo = [{inner_summary,
                                machi_projection:make_summary(P_inner2)}],
                  DbgX = replace(P_newprop3#projection_v1.dbg, InnerInfo),
                  ?REACT({a30, ?LINE, [qqqwww|DbgX]}),
                  {P_newprop3#projection_v1{dbg=DbgX,
                                            inner=P_inner2}, S_i};
              _ ->
  
negative.code:     true = sets:is_disjoint(DownS2, RepairingS2),
      true = sets:is_disjoint(UPIS2, RepairingS2),
  
      %% Hooray, all basic properties of the projection's elements are
      %% not obviously bad.  Now let's check if the UPI+Repairing->UPI
      %% transition is good.
      ?RETURN2(
         chain_state_transition_is_sane(AuthorServer1, UPI_list1, Repairing_list1,
                                        AuthorServer2, UPI_list2))
  