It would be nice to be able to delete objects through a transaction, either through transaction.delete(kind, label), or by transaction.delete(Resource<?>).
From a user perspective, a shallow delete with behind-the-scenes garbage collection of orphaned objects would be simplest, rather than having to write graph-traversing deep-delete methods manually, although this would probably be quicker to get implemented in ObjectOf.
Thinking about this some more, I think that (if a future garbage collector allows it) just cleaning objects which are no longer referenced would be cleanest, rather than deleting something that may still be referenced. Baring that, I would think that deleting something that is still referenced elsewhere should throw an exception of some kind.