public void removeAtoms(BitSet bs) {
		if (bs == null)
			return;
		int m = iAtom - bs.cardinality();
		if (removedAtomList == null)
			removedAtomList = new ArrayList<Atom>(bs.cardinality());
		else
			removedAtomList.clear();
		if (keptAtomList == null)
			keptAtomList = new ArrayList<Atom>(m);
		else
			keptAtomList.clear();
		for (int i = 0; i < iAtom; i++) {
			if (bs.get(i)) {
				removedAtomList.add(atom[i]);
			} else {
				keptAtomList.add(atom[i]);
			}
		}
		int n = keptAtomList.size();
		for (int i = 0; i < n; i++) {
			atom[i] = keptAtomList.get(i);
			atom[i].index = i;
		}
		m = removedAtomList.size();
		int j;
		for (int i = 0; i < m; i++) {
			j = n + i;
			atom[j] = removedAtomList.get(i);
			atom[j].setMovable(true);
			atom[j].setCharge(0);
			atom[j].clearBondLists();
		}
		iAtom = n;
	}