private boolean selectAbondsInvolving(String str, BitSet bs) {
		if (RANGE_LEADING.matcher(str).find()) {
			String[] s = str.split("-");
			int beg = Float.valueOf(s[0].trim()).intValue();
			int end = Float.valueOf(s[1].trim()).intValue();
			MolecularModel mm = (MolecularModel) model;
			AngularBond ab = null;
			synchronized (mm.bends.getSynchronizationLock()) {
				for (Iterator it = mm.bends.iterator(); it.hasNext();) {
					ab = (AngularBond) it.next();
					if (inRangeInclusive(ab.atom1.getIndex(), beg, end) || inRangeInclusive(ab.atom2.getIndex(), beg, end) || inRangeInclusive(ab.atom3.getIndex(), beg, end)) {
						bs.set(ab.getIndex());
					}
				}
			}
			return true;
		}
		if (INTEGER_GROUP.matcher(str).find()) {
			String[] s = str.split(REGEX_SEPARATOR + "+");
			int index;
			MolecularModel mm = (MolecularModel) model;
			AngularBond ab = null;
			for (int m = 0; m < s.length; m++) {
				index = Float.valueOf(s[m]).intValue();
				synchronized (mm.bends.getSynchronizationLock()) {
					for (Iterator it = mm.bends.iterator(); it.hasNext();) {
						ab = (AngularBond) it.next();
						if (ab.contains(mm.getAtom(index)))
							bs.set(ab.getIndex());
					}
				}
			}
			return true;
		}
		if (INDEX.matcher(str).find()) {
			int index = Float.valueOf(str.trim()).intValue();
			MolecularModel mm = (MolecularModel) model;
			AngularBond ab = null;
			synchronized (mm.bends.getSynchronizationLock()) {
				for (Iterator it = mm.bends.iterator(); it.hasNext();) {
					ab = (AngularBond) it.next();
					if (ab.contains(mm.getAtom(index)))
						bs.set(ab.getIndex());
				}
			}
			return true;
		}
		return false;
	}