anchor.diff:                   AuthzId :: object_id() | unset,
                    ObjectEjson :: ejson_term() |
                                   binary() |
  -                                {binary(), ejson_term()}) ->
  +                                {binary(), ejson_term()} |
  +                                {ejson_term(), _}) ->
                           chef_object() | #chef_cookbook_version{}.
   new_record(chef_environment, OrgId, AuthzId, EnvData) ->
       Name = ej:get({<<"name">>}, EnvData),
  
positive.code:                                           meta_long_desc    = UpdatedVersion#chef_cookbook_version.meta_long_desc,
                                            metadata          = UpdatedVersion#chef_cookbook_version.metadata,
                                            checksums         = UpdatedVersion#chef_cookbook_version.checksums,
                                            serialized_object = UpdatedVersion#chef_cookbook_version.serialized_object}.
  
  
  -spec id(chef_object()) -> object_id().
  
negative.code:     chef_db_compression:compress(Type, chef_json:encode(Data)).
  
  -spec ejson_for_indexing(chef_indexable_object() | #chef_data_bag_item{},
                           ejson_term() | {ejson_term(), _}) -> ejson_term().
  %% @doc Return EJSON terms appropriate for sending to opscode-expander for
  %% indexing. Although the EJSON data is embedded in the ChefRecord, it is stored in a
  %% possibly compressed form. To avoid double work, we pass both the Chef object record
  