anchor.diff:  %% ====================================================================
   
   %% @private
  -%% Returns values in the range [0, RingSize)
  +-spec identify_unavailable_keyspaces(chashbin:chashbin(), pos_integer(), atom()) -> list(vnode_id()).
   identify_unavailable_keyspaces(CHBin, PartitionSize, Service) ->
       %% Get a list of the VNodes owned by any unavailable nodes
       DownVNodes = [Index ||
  
positive.code:                          <- riak_core_apl:offline_owners(Service, CHBin)],
      [(DownVNode div PartitionSize) || DownVNode <- DownVNodes].
  
  
  %% @private
  find_coverage(_AllKeySpaces, _Offset, _NVal, _PartitionCount,
                _UnavailableKeySpaces, 0, Results) ->
      {ok, Results};
  find_coverage(AllKeySpaces, Offset, NVal, PartitionCount, UnavailableKeySpaces, PVC, []) ->
      %% Calculate the available keyspaces.
      AvailableKeySpaces = [{((VNode+Offset) rem PartitionCount),
                             VNode,
                             n_keyspaces(VNode, NVal, PartitionCount)}
                            || VNode <- (AllKeySpaces -- UnavailableKeySpaces)],
      case find_coverage_vnodes(
             ordsets:from_list(AllKeySpaces),
             AvailableKeySpaces,
             []) of
          {ok, CoverageResults} ->
              find_coverage(AllKeySpaces,
                            Offset,
                            NVal,
                            PartitionCount,
                            UnavailableKeySpaces,
                            PVC-1,
                            CoverageResults);
          Error ->
              Error
      end;
  find_coverage(AllKeySpaces,
                Offset,
                NVal,
                PartitionCount,
                UnavailableKeySpaces,
                PVC,
                ResultsAcc) ->
      %% Calculate the available keyspaces. The list of
      %% keyspaces for each vnode that have already been
      %% covered by the plan are subtracted from the complete
  
negative.code: %%  ]
  %% }
  
  %% Snippet from a new-style coverage plan for a two node, 8 vnode
  %% cluster at nval=3, with each partition represented twice for up to
  %% 16 parallel queries
  
  %% XXX: think about including this in the comments here
  %% {1, node, 0.0}
  %% {1, node, 0.5}
  
  %% [
  %%  %% Second vnode, first half of first partition
  