}
SlideListWithText slwt = _documentRecord.getSlideSlideListWithText();
SlideAtomsSet[] sas = slwt.getSlideAtomsSets();
Slide removedSlide = null;
ArrayList<Record> records = new ArrayList<Record>();
ArrayList<SlideAtomsSet> sa = new ArrayList<SlideAtomsSet>();
ArrayList<Slide> sl = new ArrayList<Slide>();
ArrayList<Notes> nt = new ArrayList<Notes>();
for (Notes notes : getNotes())
nt.add(notes);
for (int i = 0, num = 0; i < _slides.length; i++) {
if (i != index) {
sl.add(_slides[i]);
sa.add(sas[i]);
_slides[i].setSlideNumber(num++);
records.add(sas[i].getSlidePersistAtom());
records.addAll(Arrays.asList(sas[i].getSlideRecords()));
} else {
removedSlide = _slides[i];
nt.remove(_slides[i].getNotesSheet());
}
}
if (sa.size() == 0) {
_documentRecord.removeSlideListWithText(slwt);
} else {
slwt.setSlideAtomsSets(sa.toArray(new SlideAtomsSet[sa.size()]));
slwt.setChildRecord(records.toArray(new Record[records.size()]));
}
_slides = sl.toArray(new Slide[sl.size()]);
// if the removed slide had notes - remove references to them too
if (removedSlide != null) {
int notesId = removedSlide.getSlideRecord().getSlideAtom().getNotesID();
if (notesId != 0) {
SlideListWithText nslwt = _documentRecord.getNotesSlideListWithText();
records = new ArrayList<Record>();
ArrayList<SlideAtomsSet> na = new ArrayList<SlideAtomsSet>();
for (SlideAtomsSet ns : nslwt.getSlideAtomsSets()) {