anchor.diff:          [make_internal_node('Grantee', Attributes, GranteeContent),
            make_external_node('Permission', Permission)],
       make_internal_node('Grant', GrantContent).
  -
  --spec make_owner(list_objects_owner()) -> internal_node().
  -make_owner(#list_objects_owner_v1{id=Id, display_name=Name}) ->
  -    Content = [make_external_node('ID', Id),
  -               make_external_node('DisplayName', Name)],
  -    make_internal_node('Owner', Content).
   
   -spec format_value(atom() | integer() | binary() | list()) -> string().
   %% @doc Format value depending on its type
  
positive.code:     [make_external_node('ID', OwnerId),
       make_external_node('DisplayName', OwnerName)].
  
  list_objects_response_to_xml(Resp) ->
      KeyContents = [key_content_to_xml(Content) ||
                     Content <- (Resp?LORESP.contents)],
      CommonPrefixes = [common_prefix_to_xml(Prefix) ||
                           Prefix <- Resp?LORESP.common_prefixes],
      Contents = [make_external_node('Name', Resp?LORESP.name),
                  make_external_node('Prefix', Resp?LORESP.prefix),
                  make_external_node('Marker', Resp?LORESP.marker)] ++
                  %% use a list-comprehension trick to only include
                  %% the `NextMarker' element if it's not `undefined'
                 [make_external_node('NextMarker', NextMarker) ||
                  NextMarker <- [Resp?LORESP.next_marker],
                  NextMarker =/= undefined] ++
                 [make_external_node('MaxKeys', Resp?LORESP.max_keys),
                  make_external_node('Delimiter', Resp?LORESP.delimiter),
                  make_external_node('IsTruncated', Resp?LORESP.is_truncated)] ++
          KeyContents ++ CommonPrefixes,
      export_xml([make_internal_node('ListBucketResult', [{'xmlns', ?S3_XMLNS}],
                                     Contents)]).
  
  list_buckets_response_to_xml(Resp) ->
      BucketsContent =
  
negative.code:                         make_external_node('CreationDate', CreationDate)]).
  
  user_to_xml_owner(?RCS_USER{canonical_id=CanonicalId, display_name=Name}) ->
      make_internal_node('Owner', [make_external_node('ID', [CanonicalId]),
                                   make_external_node('DisplayName', [Name])]).
  
  -spec make_internal_node(atom(), term()) -> internal_node().
  make_internal_node(Name, Content) ->
  