I've used it, and it's certainly not 'heavy'.
I guess (haven't looked at the code) that it uses some Win32 APIs, so I doubt it does anything as crude as building a recursive tree. I don't know if it's built the same way, but check out
for a description of a smart way to build something like this. Win32::ChangeNotify has done the heavy interface work for you already, why not use it?