anchor.diff:              {<<"id">>, D#tagcontent.id},
               {<<"version">>, 1},
               {<<"urls">>, D#tagcontent.urls},
  -            {<<"last-modified">>, D#tagcontent.last_modified}
  +            {<<"last-modified">>, D#tagcontent.last_modified},
  +            {<<"user-data">>, D#tagcontent.user}
           ]})).
   
   -spec tag_lookup(any(), [binary()], [any()]) ->
  
positive.code: -type replica() :: {timer:timestamp(), nonempty_string()}.
  -record(tagcontent, {id :: binary(),
                       last_modified :: binary(),
                       urls :: [binary()]}).
  -type tagcontent() :: #tagcontent{}.
  -record(state, {tag, % :: binary(),
                  data :: 'false'  | 'notfound' | 'deleted' | {'error', _}
  
negative.code:     case lists:keysearch(Key, 1, JsonBody) of
          {value, {_, Attrib}} ->
              tag_lookup(JsonBody, Rest, [Attrib|Results]);
          false ->
              case Key of
                  <<"user-data">> ->
                      tag_lookup(JsonBody, Rest, [[] | Results]);
                  _ ->
                      {error, not_found}
              end
      end.
  
  -spec parse_tagcontent(binary()) -> {'error', _} | {'ok', tagcontent()}.
  