_wl(' saving changes...');
$osmApi->saveChanges('A yapafo.net test');
_assert($node->isDirty());
$tags = $node->findTags(array($tagName => $tagValue));
_assert(count($tags) == 1);
_assert($node->hasTags(array($tagName => $tagValue)));
// remove then reload object to get real changes
$osmApi->removeObject(OSM_Api::OBJTYPE_NODE, '611571');
$node = $osmApi->getNode('611571');
$tags = $node->findTags(array($tagName => $tagValue));
_assert(count($tags) == 1);
_assert($node->hasTags(array($tagName => $tagValue)));
// test a node's tag modification
$tagName = 'yapafo.net::test::modify';
$tagValue = '1';
$osmApi->removeAllObjects();
$node = $osmApi->getNode('611571');
if (!$node->hasTags(array($tagName => null))) {
    $node->addTag(new OSM_Objects_Tag($tagName, $tagValue));
    _wl(' saving changes...');
    $osmApi->saveChanges('A yapafo.net test');
    $osmApi->removeAllObjects();
    $node = $osmApi->getNode('611571');
} else {
}
$node->setTag($tagName, $tagValue + 1);
_assert($node->isDirty());
_wl(' saving changes...');
$osmApi->saveChanges('A yapafo.net test');
_assert($node->isDirty());
$osmApi->removeAllObjects();