private boolean undoRemoveMarkedAtoms(int nRemoved) {
		int oldNOA = nAtom;
		nAtom += nRemoved;
		int incr = 0;
		for (int i = oldNOA; i < nAtom; i++) {
			Atom a = atomBufferArray[atom.length - 1 - incr];
			atom[i].set(a);
			atom[i].setUserField(a.getUserField());
			List<Layered> l = deadLayered.get(a);
			if (l != null) {
				for (Layered x : l) {
					layerBasket.add(x);
					x.setHost(atom[i]);
				}
			}
			incr++;
		}
		if (incr == 0)
			return false;
		int n = atom.length - 1 + oldNOA;
		RadialBond.Delegate rbd = null;
		int iAtom1, iAtom2;
		if (!deadBonds.isEmpty()) {
			synchronized (deadBonds) {
				for (Iterator it = deadBonds.iterator(); it.hasNext();) {
					rbd = (RadialBond.Delegate) it.next();
					iAtom1 = rbd.getAtom1();
					iAtom2 = rbd.getAtom2();
					if (iAtom1 < atom.length)
						iAtom1 = n - iAtom1;
					else
						iAtom1 -= atom.length;
					if (iAtom2 < atom.length)
						iAtom2 = n - iAtom2;
					else
						iAtom2 -= atom.length;
					restoreDeadBond(iAtom1, iAtom2, rbd);
				}
			}
		}
		if (!deadBends.isEmpty()) {
			int iAtom3;
			AngularBond.Delegate abd;
			synchronized (deadBends) {
				for (Iterator it = deadBends.iterator(); it.hasNext();) {
					abd = (AngularBond.Delegate) it.next();
					iAtom1 = abd.getAtom1();
					iAtom2 = abd.getAtom2();
					iAtom3 = abd.getAtom3();
					if (iAtom1 < atom.length)
						iAtom1 = n - iAtom1;
					else
						iAtom1 -= atom.length;
					if (iAtom2 < atom.length)
						iAtom2 = n - iAtom2;
					else
						iAtom2 -= atom.length;
					if (iAtom3 < atom.length)
						iAtom3 = n - iAtom3;
					else
						iAtom3 -= atom.length;
					restoreDeadBend(iAtom1, iAtom2, iAtom3, abd);
				}
			}
		}
		if (!model.getRecorderDisabled()) {
			int m = model.getMovie().getCapacity();
			for (int i = oldNOA; i < nAtom; i++)
				atom[i].initializeMovieQ(m);
		}
		model.setNumberOfParticles(nAtom);
		MoleculeCollection.sort(model);
		if (nRemoved == 1) {
			model.getAtom(nAtom - 1).setSelected(true);
		} else {
			Molecule m1 = molecules.getMolecule(model.getAtom(nAtom - 1));
			Molecule m2 = molecules.getMolecule(model.getAtom(nAtom - nRemoved));
			if (m1 != null && m1 == m2)
				m1.setSelected(true);
		}
		return true;
	}