anchor.diff:  %% Postconditions for node commands.
   node_postcondition(_NodeState, {call, ?MODULE, write, [_Node, _Key, _Value]}, {ok, _}) ->
       true;
  +node_postcondition(#node_state{values=Values}=_NodeState, {call, ?MODULE, read, []}, Results) ->
  +    lager:info("results: ~p", [Results]),
  +    lager:info("values: ~p", [dict:to_list(Values)]),
  +
  +    Result = lists:foldl(fun({Key, {obj, _, _, Key, Value}}, Acc) ->
  +        lager:info("looking for ~p with value ~p", [Key, Value]),
  +
  +        case dict:find(Key, Values) of 
  +            {ok, Value} ->
  +                lager:info("found!", []),
  +                true andalso Acc;
  +            error ->
  +                case Value of 
  +                    notfound ->
  +                        true andalso Acc;
  +                    _ ->
  +                        lager:info("not found when it should be!", []),
  +                        false andalso Acc
  +                end
  +        end
  +    end, true, Results),
  +
  +    Result;
   node_postcondition(_NodeState, Command, Response) ->
       node_debug("generic postcondition fired (this probably shouldn't be hit) for command: ~p with response: ~p", 
                  [Command, Response]),
  
positive.code:         %% Wait for stabilization.
          wait_stable(?NAME(FirstName), root),
  
          RootLeader = rpc:call(?NAME(FirstName), riak_ensemble_manager, rleader_pid, []),
          ok = rpc:call(?NAME(FirstName), riak_ensemble_peer, update_members, [RootLeader, [{add, {root, ?NAME(ShortName)}}], 10000]),
  
          %% Wait until stable.
  
negative.code:     wait_members(?NAME(FirstName), root, ShouldMembers),
  
      %% Wait for root ensemble stability.
      node_debug("waiting for root ensemble stability on node: ~p after join", [FirstName]),
      wait_stable(?NAME(FirstName), root),
  
      %% Create partisan ensemble.
      node_debug("creating ensemble for the test on node ~p", [FirstName]),
      EnsembleId = partisan,
      Mod = riak_ensemble_basic_backend,
      Arg = [],
      ok = rpc:call(?NAME(FirstName), riak_ensemble_manager, create_ensemble, [EnsembleId, {root, ?NAME(FirstName)}, ShouldMembers, Mod, Arg]),
  
      %% Wait for partisan ensemble stability.
      node_debug("waiting for partisan ensemble stability on node: ~p after join", [FirstName]),
      wait_stable(?NAME(FirstName), partisan),
  
      %% Get members of the root ensemble.
      node_debug("getting members of the root ensemble on node ~p", [FirstName]),
      RootEnsembleMembers = rpc:call(?NAME(FirstName), riak_ensemble_manager, get_members, [root]),
      node_debug("=> ~p", [RootEnsembleMembers]),
  
      %% Get members of the partisan ensemble.
      node_debug("getting members of the partisan ensemble on node ~p", [FirstName]),
      PartisanEnsembleMembers = rpc:call(?NAME(FirstName), riak_ensemble_manager, get_members, [partisan]),
      node_debug("=> ~p", [PartisanEnsembleMembers]),
  
      %% Perform a single write to ensure the cluster is ready.
      node_debug("performing root ensemble write to ensure cluster is online and ready.", []),
      {ok, RRes} = rpc:call(?NAME(FirstName), riak_ensemble_client, kover, [root, rkey, "first", 5000], 5000),
      node_debug("write completed: ~p", [RRes]),
  
      %% Perform a second write to ensure the cluster is ready.
      node_debug("performing partisan ensemble write to ensure cluster is online and ready.", []),
      {ok, PRes} = rpc:call(?NAME(FirstName), riak_ensemble_client, kover, [partisan, pkey, "second", 5000], 5000),
      node_debug("write completed: ~p", [PRes]),
  
      ok.
  
  