If you use an action to call task and pass references to it as parameters, then they need to be in exactly the same order and positions as the references of the calling task or they will get scrambled.
Say you have a general task "use %object% at %location%".
If this task calls a general task "clean %location% with %object%", then both the location and object references will get the same object reference.
It seems to work properly with %object% and %character% references, but as soon as you add a %location% or %direction% it gets confused.
Item functions of references work correctly, it only fails for a naked reference.