anchor.diff:  sanitize_type(<<"list">>, V, Options) -> sanitize_list(V, Options);
   sanitize_type(<<"int">>, V, _Options) -> sanitize_int(V);
   sanitize_type(<<"unsafe">>, V, _Options) -> V;
  +sanitize_type(_, V, Options) when is_map(V) -> escape_props(V, Options);
   sanitize_type(_, V, _Options) -> escape_value(V).
   
   sanitize_list(L, Options) when is_list(L) ->
  
positive.code:     [ escape_props(L, Options) || L <- V ];
  escape_props1(<<"website">>, V, _Options) ->
      escape_value(sanitize_uri(V));
  escape_props1(<<"is_a", _/binary>>, V, Options) ->
      sanitize_list(V, Options);
  escape_props1(<<"is_", _/binary>>, V, _Options) ->
  
negative.code: 
  ensure_protocol(<<>>) -> <<>>;
  ensure_protocol(<<"#", _/binary>> = Link) -> Link;
  ensure_protocol(<<"?", _/binary>> = Link) -> Link;
  ensure_protocol(<<"/", _/binary>> = Link) -> Link;
  ensure_protocol(<<"://", _/binary>> = Link) -> <<"http", Link/binary>>;
  ensure_protocol(<<"http:", _/binary>> = Link) -> Link;
  ensure_protocol(<<"https:", _/binary>> = Link) -> Link;
  ensure_protocol(<<"data:", _/binary>> = Link) -> Link;
  ensure_protocol(<<"urn:", _/binary>> = Link) -> Link;
  ensure_protocol(<<"ftp:", _/binary>> = Link) -> Link;
  ensure_protocol(<<"mailto:", Rest/binary>>) -> <<"mailto:", (z_string:trim(Rest))/binary>>;
  ensure_protocol(<<"www.", _/binary>> = Link) -> <<"https://", Link/binary>>;
  ensure_protocol(Link) when is_binary(Link) ->
      case binary:match(Link, <<":">>) of
          nomatch ->
              % If the first path element looks like a domain name then
              % make it a https: link. Otherwise add a '/' in front.
              [First|_] = binary:split(Link, <<"/">>),
              case binary:match(First, <<".">>) of
                  nomatch -> <<$/, Link/binary>>;
  