The functions merely does a Set() call for each entry in the <props> mapping, thus properly regarding hard- and softcoded properties.
Properties not mentioned in <props> are not changed.
obj2->SetProperties(obj->QueryProperties())
/* copies all properties from <obj> to <obj2>. */