Is the recurse boolean really needed? I only see a couple of places that return true, which could call the line below.