The mirror variable is local to the method, and will ALWAYS be unitialized in each call.
Passing mirror as an argument to the method is a very good option.
EDIT: If you can't modify the method signature, can you create a private method and call that to perform the recursion?