anchor.diff:              {true, null}
       end.
   
  -%-spec is_valid_renewal(lease_t()) ->
  -%    fun ((any(), any(), any()) -> {boolean(), renewal_failed_reason() | null}). %% content check
  -%is_valid_renewal(#lease{owner=OldOwner,aux = OldAux,range=OldRange,
  -%                        epoch=OldEpoch,version=OldVersion}) ->
  -%    fun (prbr_bottom, _WriteFilter, _Next) ->
  -%            {false, lease_does_not_exist};
  -%        (#lease{owner = O0}, _, _)    when O0 =/= OldOwner->
  -%            {false, unexpected_owner};
  -%        (#lease{aux = Aux0}, _, _)    when Aux0 =/= OldAux->
  -%            {false, unexpected_aux};
  -%        (#lease{range = R0}, _, _)    when R0 =/= OldRange->
  -%            {false, unexpected_range};
  -%        (#lease{epoch = E0}, _, _)                     when E0 =/= OldEpoch ->
  -%            {false, unexpected_epoch};
  -%        (#lease{version = V0}, _, _)                   when V0 =/= OldVersion->
  -%            {false, unexpected_version};
  -%        (#lease{timeout = T0}, _, #lease{timeout = T1})  when not (T0 < T1)->
  -%            {false, timeout_is_not_newer_than_current_lease}
  -%    end.
  -
   -spec is_valid_update(non_neg_integer(), non_neg_integer()) ->
       fun ((any(), any(), any()) -> {boolean(), update_failed_reason() | null}). %% content check
   is_valid_update(CurrentEpoch, CurrentVersion) ->
  
positive.code:             {true, null}
      end.
  
  %(prbr_bottom, _WriteFilter, _Next) ->
  %            {false, lease_does_not_exist};
  
  
  %-spec is_valid_handover(non_neg_integer(), non_neg_integer()) ->
  %    fun ((any(), any(), any()) -> {boolean(), null}). %% content check
  %is_valid_handover(Epoch, Version) ->
  %    fun (Current, _WriteFilter, Next) ->
  %            Res = standard_check(Current, Next, Epoch, Version)
  %            %% checks for debugging
  %                andalso (Current#lease.epoch+1 == Next#lease.epoch)
  %                andalso (Current#lease.owner == comm:make_global(pid_groups:get_my(dht_node)))
  %                andalso (Current#lease.owner =/= Next#lease.owner)
  %                andalso (Current#lease.range == Next#lease.range)
  %                andalso (Current#lease.aux == Next#lease.aux)
  %                andalso (Current#lease.timeout < Next#lease.timeout)
  %                andalso (os:timestamp() <  Next#lease.timeout),
  %            {Res, null}
  %    end.
  
  -spec is_valid_split_step1() ->
      fun ((any(), any(), any()) -> {boolean(), split_step1_failed_reason() | null}). %% content check
  is_valid_split_step1() ->
  
negative.code:                                | unexpected_version
                                 | timeout_is_not_newer_than_current_lease.
  
  -type update_failed_reason() :: lease_does_not_exist
                                | epoch_or_version_mismatch.
  
  -type split_step1_failed_reason() :: lease_already_exists.
  
  -spec delta() -> pos_integer().
  delta() -> 10.
  