code: private void mergeModComps(List<ModifiedCompound> modComps) {
  		TreeSet<Integer> remove = new TreeSet<Integer>();
  		int n = modComps.size();
  		for (int icurr=1; icurr<n; icurr++) {
  			ModifiedCompound curr = modComps.get(icurr);
  
  			String id = curr.getModification().getId();
  			if (ProteinModificationRegistry.getById(id).getCategory()
  					!=ModificationCategory.UNDEFINED)
  				continue;
  
  			// find linked compounds that before curr
  			//List<Integer> merging = new ArrayList<Integer>();
  			int ipre = 0;
  			for (; ipre<icurr; ipre++) {
  				if (remove.contains(ipre))	continue;
  				ModifiedCompound pre = modComps.get(ipre);
  				if (!Collections.disjoint(pre.getGroups(false),
  						curr.getGroups(false))) {
  					break;
  				}
  			}
  
  			if (ipre<icurr) {
  				ModifiedCompound mcKeep = modComps.get(ipre);
  
  				// merge modifications of the same type
  				if (mcKeep.getModification().getId().equals(id)) {
  					// merging the current one to the previous one
  					mcKeep.addAtomLinkages(curr.getAtomLinkages());
  					remove.add(icurr);
  				}
  			}
  		}
  
  		Iterator<Integer> it = remove.descendingIterator();
  		while (it.hasNext()) {
  			modComps.remove(it.next().intValue());
  		}
  	}
docs: Merge identified modified compounds if linked.