anchor.diff:      ?FORALL({RSeed,NQdiff,Objects,ReqId,PartVals,NodeStatus0},
               {largenat(),choose(0,4096),
                riak_objects(), noshrink(largeint()),
  -             partvals(),non_empty(longer_list(10, node_status()))},
  +             partvals(),at_least_one_up(longer_list(10, node_status()))},
       begin
           N = length(PartVals),
           R = (RSeed rem N) + 1,
  
positive.code:         end,
  
      RepairObject  = (catch build_merged_object(Heads, Objects)),
      RepairObjects = [ Obj || {vnode_put, _, {_, _, Obj, _, _}} <- RepairH ],
  
      conjunction(
          [{puts, equals(lists:sort(Expected), lists:sort(Actual))},
  
negative.code: 
  non_empty(G) ->
      ?SUCHTHAT(X, G, X /= [] andalso X /= <<>>).
  
  %% Make sure at least one node is up - code in riak_kv_util makes
  %% some assumptions that the node the get FSM is running on is
  %% in the cluster causing problems if it isn't.
  at_least_one_up(G) ->
      ?SUCHTHAT(X, G, lists:member(up, X)).
  
  largenat() ->
      ?LET(X, largeint(), abs(X)).
  