anchor.diff:  fold(Fun, Initial, #ephp_array{values=Values, trigger=undefined}) ->
       lists:foldl(fun({K,V}, Acc) -> Fun(K, V, Acc) end, Initial, Values);
   
  -fold(Fun, Initial, #ephp_array{trigger={Module,Function}}=Array) ->
  -    Module:Function(Array, {fold, Fun, Initial}).
  +fold(Fun, Initial, #ephp_array{trigger={Module,Function,Args}}=Array) ->
  +    NewFun = fun({K,V},Acc) -> Fun(K,V,Acc) end,
  +    apply(Module, Function, Args ++ [Array, {fold, NewFun, Initial}]).
   
   to_list(#ephp_array{values=Values, trigger=undefined}) ->
       Values;
   
  -to_list(#ephp_array{trigger={Module,Function}}=Array) ->
  -    Module:Function(Array, to_list).
  +to_list(#ephp_array{trigger={Module,Function,Args}}=Array) ->
  +    apply(Module, Function, Args ++ [Array, to_list]).
   
   %% -----------------------------------------------------------------------------
   %% Internal functions
  
positive.code: report(#ephp_array{trigger=undefined}=Array, _) ->
      Array;
  
  report(#ephp_array{trigger={Module,Function}}=Array, Action) ->
      Module:Function(Array, Action).
  
negative.code: 
  new() -> #ephp_array{}.
  
  new(Module, Function, Args) ->
      #ephp_array{trigger = {Module, Function, Args}}.
  
  size(#ephp_array{size=Size}) -> Size.
  
  