anchor.diff:      CallbackFun({QueryName, UpdatedFields}).
   
   flatten(ObjectRec) ->
  +    call_if_exported(ObjectRec, flatten, [ObjectRec], fun default_flatten/1).
  +
  +call_if_exported(ObjectRec, FunName, Args, DefaultFun) ->
       Mod = callback_mod(ObjectRec),
  -    case erlang:function_exported(Mod, flatten, 1) of
  +    case erlang:function_exported(Mod, FunName, length(Args)) of
           true ->
  -            Mod:flatten(ObjectRec);
  +            erlang:apply(Mod, FunName, Args);
           false  ->
  -            default_flatten(ObjectRec)
  +            erlang:apply(DefaultFun, Args)
       end.
  -
   default_flatten(ObjectRec) ->
       [_RecName|Tail] = tuple_to_list(ObjectRec),
       %% We detect if any of the fields in the record have not been set
  
positive.code:     true;
  is_undefined(_) ->
      false.
  
negative.code: update(Rec, ActorId, CallbackFun) ->
      Mod = element(1, Rec),
      Mod:update(chef_object:set_updated(Rec, ActorId), CallbackFun).
  
  delete(Rec, CallbackFun) ->
      call_if_exported(Rec, delete, [Rec, CallbackFun], fun do_delete/2).
    
  %% Return the callback module for a given object record type. We're putting the abstraction
  %% in place in case we need to do something other than the identity mapping of record name
  %% to callback module name that we're doing there. If we needed to swap in something else,
  