anchor.diff:  props_filter_protected(Props) ->
       lists:filter(fun({K,_V}) -> not is_protected(K) end, Props).
   
  +
  +to_slug(undefined, _Context) -> undefined;
  +to_slug({trans, _} = Tr, Context) -> to_slug(z_trans:lookup_fallback(Tr, en, Context), Context);
  +to_slug(B, _Context) when is_binary(B) -> z_string:to_slug(B); 
  +to_slug(X, Context) -> to_slug(z_convert:to_binary(X), Context).
   
   %% @doc Map property names to an atom, fold pivot and computed fields together for later filtering.
   map_property_name(P) when not is_list(P) -> map_property_name(z_convert:to_list(P));
  
positive.code: 
  %% @doc Fill in some defaults for empty props on insert.
  %% @spec props_defaults(Props1, Context) -> Props2
  props_defaults(Props, _Context) ->
      % Generate slug from the title (when there is a title)
      Props1 = case proplists:get_value(slug, Props) of
                  undefined ->
  
negative.code:                          {_, true} -> Props;
                           _X ->
                               %% Determine the slug from the title.
                               [{slug, to_slug(Title, Context)} | proplists:delete(slug, Props)]
                       end
               end,
      Props1.
  