thats the problem: we shouldn't delete from the original index. We should instead process every single path with is in the original dircache. For each path covered by -o we should copy what's in the original index. For every other path we should copy whats in HEAD. 

In other words. For our copy of our index we have to work on all files which are not covered by -o option. We should reset them to HEAD state. All the pathes covered by -o are just copied over.