+ for(unsigned i=0; i<2; ++i)
+ if(TrackIter end = tc.get_end(i))
+ ends.push_back(end);
+ }
+ else if(TrackIter end = tc.get_end(dir))
+ ends.push_back(end);
+
+ /* Initialize goals for the ends of the target chain. We travel away from
+ the goals in the search phase so the iters appear to point the wrong way. */
+ for(vector<TrackIter>::const_iterator i=ends.begin(); i!=ends.end(); ++i)
+ {
+ const TrackType::Endpoint &ep = i->endpoint();
+ unsigned nls = (*i)->get_n_link_slots();
+ for(unsigned j=0; j<nls; ++j)