anchor.diff:  		  text = #text{lang = Lang,
   			       data = translate(Lang, Text)}}.
   
  --spec match_tag(xmlel() | xmpp_element(), binary(), binary()) -> boolean().
  -match_tag(El, TagName, XMLNS) ->
  -    get_name(El) == TagName andalso get_ns(El) == XMLNS.
  +-spec match_tag(xmlel() | xmpp_element(),
  +		binary(), binary(), binary()) -> boolean().
  +match_tag(El, TagName, XMLNS, TopXMLNS) ->
  +    case get_name(El) of
  +	TagName ->
  +	    case get_ns(El) of
  +		XMLNS -> true;
  +		<<"">> -> XMLNS == TopXMLNS;
  +		_ -> false
  +	    end;
  +	_ ->
  +	    false
  +    end.
   
   -spec translate(lang(), reason_text()) -> binary().
   translate(Lang, {Format, Args}) ->
  
positive.code: remove_subtag(Stanza, Tag) ->
      Els = get_els(Stanza),
      TagName = xmpp_codec:get_name(Tag),
      XMLNS = xmpp_codec:get_ns(Tag),
      NewEls = remove_subtag(Els, TagName, XMLNS),
      set_els(Stanza, NewEls).
  
  remove_subtag([El|Els], TagName, XMLNS) ->
      case match_tag(El, TagName, XMLNS) of
  	true ->
  	    remove_subtag(Els, TagName, XMLNS);
  	false ->
  	    [El|remove_subtag(Els, TagName, XMLNS)]
      end;
  remove_subtag([], _, _) ->
      [].
  
  -spec has_subtag(stanza(), xmpp_element()) -> boolean().
  has_subtag(Stanza, Tag) ->
      Els = get_els(Stanza),
      TagName = xmpp_codec:get_name(Tag),
      XMLNS = xmpp_codec:get_ns(Tag),
      has_subtag(Els, TagName, XMLNS).
  
  has_subtag([El|Els], TagName, XMLNS) ->
      case match_tag(El, TagName, XMLNS) of
  	true ->
  	    true;
  	false ->
  	    has_subtag(Els, TagName, XMLNS)
      end;
  has_subtag([], _, _) ->
      false.
  
  -spec append_subtags(stanza(), [xmpp_element() | xmlel()]) -> stanza().
  
negative.code: 		(presence(), xmpp_element()) -> presence().
  set_subtag(Stanza, Tag) ->
      TagName = xmpp_codec:get_name(Tag),
      TopXMLNS = xmpp_codec:get_ns(Stanza),
      XMLNS = xmpp_codec:get_ns(Tag),
      Els = get_els(Stanza),
      NewEls = set_subtag(Els, Tag, TagName, XMLNS, TopXMLNS),
      set_els(Stanza, NewEls).
  
  set_subtag([El|Els], Tag, TagName, XMLNS, TopXMLNS) ->
      case match_tag(El, TagName, XMLNS, TopXMLNS) of
  	true ->
  	    [Tag|Els];
  	false ->
  	    [El|set_subtag(Els, Tag, TagName, XMLNS, TopXMLNS)]
      end;
  set_subtag([], Tag, _, _, _) ->
      [Tag].
  
  -spec get_subtag(stanza(), xmpp_element()) -> xmpp_element() | false.
  get_subtag(Stanza, Tag) ->
      Els = get_els(Stanza),
      TopXMLNS = xmpp_codec:get_ns(Stanza),
      TagName = xmpp_codec:get_name(Tag),
      XMLNS = xmpp_codec:get_ns(Tag),
      get_subtag(Els, TagName, XMLNS, TopXMLNS).
  
  get_subtag([El|Els], TagName, XMLNS, TopXMLNS) ->
      case match_tag(El, TagName, XMLNS, TopXMLNS) of
  	true ->
  	    try
  		decode(El)
  	    catch _:{xmpp_codec, _Why} ->
  		    get_subtag(Els, TagName, XMLNS, TopXMLNS)
  	    end;
  	false ->
  	    get_subtag(Els, TagName, XMLNS, TopXMLNS)
      end;
  get_subtag([], _, _, _) ->
      false.
  
  -spec remove_subtag(iq(), xmpp_element()) -> iq();
  