anchor.diff:  
   extract_struct_member(#xmlElement{content = NameValueText} = _Member) ->
     NameValue = [E || #xmlElement{} = E <- NameValueText],
  -  case NameValue of
  -    [NameE, #xmlElement{name = value, content = Children} = _ValueE] ->
  -      Name  = decode_string(NameE),
  -      Value = decode_value_rec(extract_child(Children)),
  -      {Name, Value};
  -    _Any -> throw({error, bad_xml_structure})
  -  end.
  +  [NameE, #xmlElement{name = value, content = Children} = _ValueE] = NameValue,
  +  Name  = decode_string(NameE),
  +  Value = decode_value(extract_child(Children)),
  +  {Name, Value}.
   
   %% @doc Decode array (sequence of values).
   %%
  
positive.code: decode_array(#xmlElement{content = ArrayData} = _V) ->
    #xmlElement{name = data, content = ValueList} = extract_child(ArrayData),
    Values = [
      decode_value_rec(extract_child(Vals)) ||
      #xmlElement{name = value, content = Vals} = _ValE <- ValueList
    ],
    Values.
  
  %% @doc Extract the single child from list of children (or throw an error).
  %%
  %%   Function clears any `#xmlText{}', leaving `#xmlElement{}' elements.
  %%
  %%   If result contains just one element, that element is returned. Otherwise,
  %%   function throws `{error, bad_xml_structure}' tuple.
  %%
  %% @spec extract_child([xml_node()]) ->
  %%   #xmlElement{}
  
negative.code:   case [E || #xmlElement{} = E <- TopChildren] of
      [#xmlElement{name = params, content = Children}] ->
        % decoding requires stripping non-tag children
        Result = decode_results([E || #xmlElement{} = E <- Children]),
        {ok, result, Result};
      [#xmlElement{name = fault, content = Children}] ->
        % decoding requires stripping non-tag children
        Exception = decode_faults([E || #xmlElement{} = E <- Children]),
        {ok, exception, Exception}
    end.
  
  
  