+ sourceRefs.remove(searchrefs.get(isr));
+ dupeFound = true;
+ }
+ }
+ }
+ if (dupeFound)
+ {
+ // rebuild the search array from the filtered sourceRefs list
+ dbrSourceSet.clear();
+ dbrSourceSet.addAll(sourceRefs);
+ }
+ }
+ }
+
+ /**
+ * process sequence retrieved via a dbref on source sequence to resolve and
+ * transfer data
+ *
+ * @param cf
+ * @param sourceSequence
+ * @param retrievedSequence
+ * @return true if retrieveSequence was imported
+ */
+ private boolean importCrossRefSeq(AlignedCodonFrame cf,
+ List<SequenceI> newDsSeqs, List<SequenceI> doNotAdd,
+ SequenceI sourceSequence, SequenceI retrievedSequence)
+ {
+ /**
+ * set when retrievedSequence has been verified as a crossreference for
+ * sourceSequence
+ */
+ boolean imported = false;
+ List<DBRefEntry> dbr = retrievedSequence.getDBRefs();
+ if (dbr != null)
+ {
+ for (int ib = 0, nb = dbr.size(); ib < nb; ib++)
+ {
+
+ DBRefEntry dbref = dbr.get(ib);
+ SequenceI matched = findInDataset(dbref);
+ if (matched == sourceSequence)
+ {
+ // verified retrieved and source sequence cross-reference each other
+ imported = true;
+ }
+ // find any entry where we should put in the sequence being
+ // cross-referenced into the map
+ Mapping map = dbref.getMap();
+ if (map != null)
+ {
+ SequenceI ms = map.getTo();
+ if (ms != null && map.getMap() != null)
+ {
+ if (ms == sourceSequence)