addr:* берется если есть, иначе геометрия. Если такого родителя нет, то в списке будет родитель без osm объекта. Если есть, то прилепится к нему.
А в конце таки проверяется, что объекты геометрически попали туда, куда надо.
Иногда коллизия возникает, когда объект посчитался в одном родителе, и дети его попали в другой.
http://wowik.byethost7.com/places/err.php?err=35