Is there a reason for that (subject) routine to call itself recursively, rather than simply looping on the terminating condition?
The current recursive implementation does not seem to be deterministically safe.
Can you explain why?
I've modified this method, so I have better understanding for it now:)