Here's a real-world example of a use case for structural search/replace, which I cannot figure out how to make work.
We have many methods that take both a HttpServletRequest parameter, and a HttpServletResponse parameter.
The goal: Redeclare any method taking both of these params to take instead a MyRequestContext parameter named "context" (preserving whatever other arguments they also take). All calling code would be updated. All method bodies would replace the usages of these paramters with context.getRequest() and context.getResponse().
This is a very powerful refactoring. I have the sense that it should be possible, but I didn't get very far trying it. Perhaps it needs to be done in several stages.