anchor.diff:      end.
   
   %%
  --spec(get_subtag_cdata/2 ::
  -(
  -  Tag  :: xmlel(),
  -  Name :: binary())
  -    -> binary()
  -).
  +-spec get_subtag_cdata(Tag :: xmlel(), Name :: binary()) -> binary().
   
   get_subtag_cdata(Tag, Name) ->
       case get_subtag(Tag, Name) of
  
positive.code:        || <<C>> <= S >>.
  
  %%
  -spec(remove_cdata_p/1 ::
  (
    El :: xmlel() | cdata())
      -> boolean()
  ).
  
  remove_cdata_p(#xmlel{}) -> true;
  remove_cdata_p(_) -> false.
  
  %%
  -spec(remove_cdata/1 ::
  (
    L :: [xmlel() | cdata()])
      -> [xmlel()]
  ).
  
  remove_cdata(L) -> [E || E <- L, remove_cdata_p(E)].
  
  %% This function is intended to remove subtags based on a name and an
  %% attribute, usually an xmlns attribute for a specific XMPP
  %% extension.
  -spec(remove_subtags/3 ::
  (
    Xmlel :: xmlel(),
    Name  :: binary(),
    Attr  :: attr())
      -> Xmlel :: xmlel()
  ).
  
  remove_subtags(#xmlel{name = TagName, attrs = TagAttrs, children = Els},
    Name, Attr) ->
  
negative.code:     end.
  
  %%
  -spec get_subtag_with_xmlns(Xmlel :: xmlel(), Name :: binary(),
  			    XMLNS :: binary()) -> xmlel() | false.
  
  get_subtag_with_xmlns(#xmlel{children = Els}, Name, XMLNS) ->
      get_subtag_with_xmlns1(Els, Name, XMLNS).
  
  %%
  -spec get_subtag_with_xmlns1(Els :: [xmlel() | cdata()], Name :: binary(),
  			     XMLNS :: binary()) -> xmlel() | false.
  
  get_subtag_with_xmlns1([El | Els], Name, XMLNS) ->
      case El of
  