anchor.diff:  
   %% @doc Filter function for subscriptions that returns true if a
   %%      direct neighbor, i.e. pred, succ or base node, changed.
  --spec subscribe_dneighbor_change_filter(OldNeighbors::nodelist:neighborhood(), NewNeighbors::nodelist:neighborhood(), IsSlide::slide()) -> boolean().
  -subscribe_dneighbor_change_filter(OldNeighbors, NewNeighbors, _IsSlide) ->
  +-spec subscribe_dneighbor_change_filter(OldNeighbors::nodelist:neighborhood(), NewNeighbors::nodelist:neighborhood(), SlideType::slide()) -> boolean().
  +subscribe_dneighbor_change_filter(OldNeighbors, NewNeighbors, _SlideType) ->
       nodelist:node(OldNeighbors) =/= nodelist:node(NewNeighbors) orelse
           nodelist:pred(OldNeighbors) =/= nodelist:pred(NewNeighbors) orelse
           nodelist:succ(OldNeighbors) =/= nodelist:succ(NewNeighbors).
  
positive.code: 
  -type subscriber_filter_fun() :: fun((OldNeighbors::nodelist:neighborhood(),
                                        NewNeighbors::nodelist:neighborhood(),
                                        IsSlide::slide()) -> boolean()).
  -type subscriber_exec_fun() :: fun((Subscriber::pid() | null, Tag::any(),
                                      OldNeighbors::nodelist:neighborhood(),
                                      NewNeighbors::nodelist:neighborhood()) -> any()).
  
negative.code: %% @doc Filter function for subscriptions that returns true if a
  %%      direct neighbor, i.e. pred, succ or base node, changed or a slide
  %%      operation finished.
  -spec subscribe_dneighbor_change_slide_filter(OldNeighbors::nodelist:neighborhood(), NewNeighbors::nodelist:neighborhood(), SlideType::slide()) -> boolean().
  subscribe_dneighbor_change_slide_filter(OldNeighbors, NewNeighbors, SlideType) ->
      SlideType =/= none orelse
          nodelist:node(OldNeighbors) =/= nodelist:node(NewNeighbors) orelse
          nodelist:pred(OldNeighbors) =/= nodelist:pred(NewNeighbors) orelse
          nodelist:succ(OldNeighbors) =/= nodelist:succ(NewNeighbors).
  