When parameters are used both outside and inside a sub-query, the parameter values are overwritten by other parameters.
I did write up a test case, and provided a patch, but this patch has problems with replacing where clauses. Once a where clause is replaced, in either the root, or a sub query, params have to be cleaned up, but that doesn't clear out the _where property, which means they will not be rebuilt. But there are no tests that would catch that so far. That probably should be an extension of TestEdit#testEditParameterizedPredicateRemoved