IMHO the best strategy for this would be to validate as much upfront. before you attempt to execute an OS file rename, check it against it's siblings for collisions. then, you can be optimistic about the rename. if there's an error, you can post an event back calling for a general refresh of the tree structure which will undo the optimistic rename that preceded the actual operation