code: private void recordUnidentifiableAtomLinkages(List<ModifiedCompound> modComps,
  			List<Group> ligands) {
  
  		// first put identified linkages in a map for fast query
  		Set<StructureAtomLinkage> identifiedLinkages = new HashSet<StructureAtomLinkage>();
  		for (ModifiedCompound mc : modComps) {
  			identifiedLinkages.addAll(mc.getAtomLinkages());
  		}
  
  		// record
  		// cross link
  		int nRes = residues.size();
  		for (int i=0; i<nRes-1; i++) {
  			Group group1 = residues.get(i);
  			for (int j=i+1; j<nRes; j++) {
  				Group group2 = residues.get(j);
  				List<Atom[]> linkages = StructureUtil.findAtomLinkages(
  						group1, group2, true, bondLengthTolerance);
  				for (Atom[] atoms : linkages) {
  					StructureAtomLinkage link = StructureUtil.getStructureAtomLinkage(atoms[0],
  							true, atoms[1], true);
  					unidentifiableAtomLinkages.add(link);
  				}
  			}
  		}
  
  		// attachment
  		int nLig = ligands.size();
  		for (int i=0; i<nRes; i++) {
  			Group group1 = residues.get(i);
  			for (int j=0; j<nLig; j++) {
  				Group group2 = ligands.get(j);
  				if (group1.equals(group2)) { // overlap between residues and ligands
  					continue;
  				}
  				List<Atom[]> linkages = StructureUtil.findAtomLinkages(
  						group1, group2, false, bondLengthTolerance);
  				for (Atom[] atoms : linkages) {
  					StructureAtomLinkage link = StructureUtil.getStructureAtomLinkage(atoms[0],
  							true, atoms[1], false);
  					unidentifiableAtomLinkages.add(link);
  				}
  			}
  		}
  	}
docs: Record unidentifiable atom linkages in a chain. Only linkages between two
  residues or one residue and one ligand will be recorded.