public List<EObject> getElementsToDelete() {
List<EObject> result = new ArrayList<EObject>();
// all elements generated by this
if (source instanceof GeneratesElements) {
GeneratesElements g = (GeneratesElements) source;
for (EObject part : g.getGeneratedElements()) {
result.add(part);
// recursive delete of generated elements
if (part instanceof GeneratedElement) {
result.addAll( new GeneratedElementDeleter((GeneratedElement) part).getElementsToDelete() );