anchor.diff:      %% Need to convert from millsec to microsec
       case (Expire =/= never) andalso (Diff > (Expire * 1000)) of
           true ->
  -            clear_tree(State);
  +            State#state{expired=true};
           false ->
               State
       end;
  -maybe_clear(State) ->
  +maybe_expire(State) ->
       State.
   
   -spec clear_tree(state()) -> state().
  
positive.code:     Trees3 = [{IdxN, hashtree:close(Tree)} || {IdxN, Tree} <- Trees2],
      State#state{trees=Trees3}.
  
  %% @private
  %% @doc Unless skipping the background manager, try to acquire the per-vnode lock.
  %%      Sets our task meta-data in the lock as 'aae_rebuild', which is useful for
  %%      seeing what's holding the lock via @link riak_core_background_mgr:ps/0.
  -spec maybe_get_vnode_lock(SrcPartition::integer()) -> ok | max_concurrency.
  maybe_get_vnode_lock(SrcPartition) ->
      case riak_core_bg_manager:use_bg_mgr(riak_kv, aae_use_background_manager) of
          true  ->
              Lock = ?KV_VNODE_LOCK(SrcPartition),
              case riak_core_bg_manager:get_lock(Lock, self(), [{task, aae_rebuild}]) of
                  {ok, _Ref} -> ok;
                  max_concurrency -> max_concurrency
              end;
  
negative.code: %% @doc Clear the specified index_hashtree, clearing all associated hashtrees
  clear(Tree) ->
      gen_server:call(Tree, clear, infinity).
  
  %% @doc Expire the specified index_hashtree
  expire(Tree) ->
      gen_server:call(Tree, expire, infinity).
  
  %%%===================================================================
  %%% gen_server callbacks
  