+ XMLProperty const * prop_id = (*niter)->property ("id");
+ assert (prop_id);
+ PBD::ID id (prop_id->value ());
+
+ LocationList::const_iterator i = locations.begin();
+ while (i != locations.end () && (*i)->id() != id) {
+ ++i;
+ }
+
+ Location* loc;
+ if (i != locations.end()) {
+ /* we can re-use an old Location object */
+ loc = *i;
+ loc->set_state (**niter, version);
+ } else {
+ loc = new Location (_session, **niter);
+ }