try {
manually delete the object
}
catch (cannot delete object){
try {
delete all parent objects
catch (cannot delete parent objects){
move to a folder called 'obsolete objects'
}
}
you know, try to delete and if you can't, move it aside in a separate folder. We've never even tried to delete obsolete objects after e.g. a context purge.