anchor.diff:  
   -callback init(rcl_state:t()) -> {ok, rcl_state:t()} | {error, Reason::term()}.
   -callback do(rcl_state:t()) -> {error, Reason::term()} | {ok, rcl_state:t()}.
  --callback format({error, Reason::term()}) -> iolist().
  +-callback format_error({error, Reason::term()}) -> iolist().
   
   %%%===================================================================
   %%% API
  
positive.code: %%
  %% @param Provider the provider object
  %% @param State the current state of the system
  -spec do(Provider::t(), rcl_state:t()) -> rcl_state:t().
  do({?MODULE, Mod}, State) ->
      Mod:do(State).
  
  %% @doc print the provider module name
  %%
  
negative.code: %%
  %% @param ModuleName The module name.
  %% @param State0 The current state of the system
  -spec new(module(), rcl_state:t()) ->
                   {t(), {ok, rcl_state:t()} | {error, Reason::term()}}.
  new(ModuleName, State0) when is_atom(ModuleName) ->
      State1 = ModuleName:init(State0),
      case code:which(ModuleName) of
  