anchor.diff:  to_xmerl(#dbus_node{}=Elem) ->
       {node,
        case to_binary(Elem#dbus_node.name) of
  -	 undefined ->
  -	     [];
  -	 Name ->
  -	     [{name, Name}]
  +         undefined ->
  +             [];
  +         Name ->
  +             [{name, Name}]
        end,
        to_xmerl(Elem#dbus_node.elements) ++
  -     to_xmerl(Elem#dbus_node.interfaces)
  +         to_xmerl(Elem#dbus_node.interfaces)
       };
   
   to_xmerl(#dbus_iface{}=Elem) ->
       {interface,
        [{name, to_binary(Elem#dbus_iface.name)}],
        to_xmerl(Elem#dbus_iface.methods) ++
  -     to_xmerl(Elem#dbus_iface.signals) ++
  -     to_xmerl(Elem#dbus_iface.properties)};
  +         to_xmerl(Elem#dbus_iface.signals) ++
  +         to_xmerl(Elem#dbus_iface.properties)};
   
   to_xmerl(#dbus_method{}=Elem) ->
       Result =
  -	case Elem#dbus_method.result of
  -	    none ->
  -		[];
  -	    undefined ->
  -		[];
  -	    Arg ->
  -		[to_xmerl(Arg)]
  -	end,
  +        case Elem#dbus_method.result of
  +            none ->
  +                [];
  +            undefined ->
  +                [];
  +            Arg ->
  +                [to_xmerl(Arg)]
  +        end,
       {method,
        case to_binary(Elem#dbus_method.name) of
  -	    undefined ->
  -	        [];
  -	    Name ->
  -	        [{name, Name}]
  +         undefined ->
  +             [];
  +         Name ->
  +             [{name, Name}]
        end,
        to_xmerl(Elem#dbus_method.args) ++ Result};
   
   to_xmerl(#dbus_signal{}=Elem) ->
       Result =
  -	case Elem#dbus_signal.result of
  -	    none ->
  -		[];
  -	    undefined ->
  -		[];
  -	    Arg ->
  -		[to_xmerl(Arg)]
  -	end,
  +        case Elem#dbus_signal.result of
  +            none ->
  +                [];
  +            undefined ->
  +                [];
  +            Arg ->
  +                [to_xmerl(Arg)]
  +        end,
       {signal,
        case list_to_binary(Elem#dbus_signal.name) of
  -	    undefined ->
  -	        [];
  -	    Name ->
  -	        [{name, Name}]
  +         undefined ->
  +             [];
  +         Name ->
  +             [{name, Name}]
        end,
        to_xmerl(Elem#dbus_signal.args) ++ Result};
   
   to_xmerl(#dbus_arg{}=Elem) ->
       {arg, 
        case to_binary(Elem#dbus_arg.name) of
  -	    undefined ->
  -	        [];
  -	    Name ->
  -	        [{name, Name}]
  +         undefined ->
  +             [];
  +         Name ->
  +             [{name, Name}]
        end ++
  -     [{direction, Elem#dbus_arg.direction}, {type, Elem#dbus_arg.type}],  []}.
  +         [{direction, Elem#dbus_arg.direction}, {type, Elem#dbus_arg.type}],  []}.
   
   xml_event(startDocument, _L, S) ->
       S;
  
positive.code: 
  from_xml_string(Data) when is_binary(Data) ->
      Opts = [{event_fun, fun xml_event/3}, 
  	    {event_state, #state{}},
  	    skip_external_dtd],
      case xmerl_sax_parser:stream(Data, Opts) of
  	{ok, #dbus_node{}=Node, _Rest} ->
  	    Node;
  	{_Tag, _Location, Reason, _EndTags, _State} ->
  	    ?error("Error parsing introspection: ~p~n", [Reason]),
  	    throw({error, parse_error})
      end.
  
  from_xml(Filename) ->
      Opts = [{event_fun, fun xml_event/3}, 
  	    {event_state, #state{}},
  	    skip_external_dtd],
      case xmerl_sax_parser:file(Filename, Opts) of
  	{ok, #dbus_node{}=Node, _Rest} ->
  	    Node;
  	{_Tag, _Location, Reason, _EndTags, _State} ->
  	    ?error("Error parsing introspection: ~p~n", [Reason]),
  	    throw({error, parse_error})
      end.
  
  %%%
  
negative.code: 
  xml_event({startElement, _, "annotation", _, Attrs}, _L, #state{s=method, method=#dbus_method{annotations=Annotations}=M}=S) ->
      S#state{s=method_annotation, 
              method=M#dbus_method{annotations=[ build_annotation(Attrs, {undefined, undefined}) | Annotations]}};
  
  xml_event({startElement, _, "annotation", _, Attrs}, _L, #state{s=iface, iface=#dbus_iface{annotations=Annotations}=I}=S) ->
      S#state{s=iface_annotation, 
              iface=I#dbus_iface{annotations=[ build_annotation(Attrs, {undefined, undefined}) | Annotations]}};
  
  xml_event({startElement, _, "annotation", _, Attrs}, _L, #state{s=property, property=#dbus_property{annotations=Annotations}=P}=S) ->
      S#state{s=property_annotation, 
              property=P#dbus_property{annotations=[ build_annotation(Attrs, {undefined, undefined}) | Annotations]}};
  
  xml_event({startElement, _, "annotation", _, Attrs}, _L, #state{s=signal, signal=#dbus_signal{annotations=Annotations}=Sig}=S) ->
      S#state{s=signal_annotation, 
              signal=Sig#dbus_signal{annotations=[ build_annotation(Attrs, {undefined, undefined}) | Annotations]}};
  
  xml_event({endElement, _, "node", _}, _L, #state{s=node}=S) ->
      S#state{s=root};
  