anchor.diff:                  [{result, equals(RetResult, ExpResult)},
                    {details, check_details(RetInfo, State)},
                    {n_value, equals(length(History), ExpectedN)},
  -                 {repair, check_repair(Objects, RepairHistory, History)},
  +                 {repair, check_repair(Objects, RepairHistory, History, RRAbort)},
                    {delete,  check_delete(Objects, RepairHistory, History, PerfectPreflist)},
                    {distinct, all_distinct(Partitions)},
                    {told_monitor, fsm_eqc_util:is_get_put_last_cast(get, GetPid)}
  
positive.code: %% Check the read repairs - no need to worry about delete objects, deletes can only
  %% happen when all read repairs are complete.
  
  check_repair(Objects, RepairH, H) ->
      Actual = [ Part || {Part, ?KV_PUT_REQ{}} <- RepairH ],
      Heads  = merge_heads([ Lineage || {_, {ok, Lineage}} <- H ]),
      RepairObject  = (catch build_merged_object(Heads, Objects)),
      Expected =expected_repairs(H),
      RepairObjects = [ Obj || {_Idx, ?KV_PUT_REQ{object=Obj}} <- RepairH ],
      conjunction(
          [{puts, equals(lists:sort(Expected), lists:sort(Actual))},
  
negative.code: options() ->
      list(option()).
  
  rr_abort_opts() ->
      % {SoftCap, HardCap, ActualRunning, RandomRollResult}
      {choose(1000, 2000), choose(3000, 4000), choose(0, 4999), choose(0, 100)}.
  
  prop_basic_get() ->
      ?FORALL({RSeed,PRSeed,Options0, Objects,ReqId,VGetResps,RRAbort},
              {r_seed(), r_seed(), options(),
               fsm_eqc_util:riak_objects(), noshrink(largeint()),
               vnodegetresps(),rr_abort_opts()},
      begin
          N = length(VGetResps),
          {R, RealR} = r_val(N, 1000000, RSeed),
  