Note: I'm using "Lunar" which is basically a toolkit to speed up and ease the C++->Lua binding process - it's not exactly automatic, but it sure does help noobs like me. If you haven't heard of it, it basically makes the whole binding process (metatables, registry, etc.) less tedious through a C++ template.
Line 1 in my script creates a userdata class instance LuaSceneManager, which "wraps" the SceneManager singleton in my engine.
Line 2 creates a LuaSceneNode userdata class instance PKNode, which instantiates/stores/wraps a Node instance.
Line 3 prints the memory address of the LuaSceneNode userdata class instance PKNode.
Line 4 passes the LuaSceneNode userdata PKNode to the LuaSceneManager member function "Attach", which is implemented in C++.
This is where I'm running into troubles:

In the above code at Line 14 and in the Lua5 code at the top on Line 3, the memory address of the userdata is printed to the console. The memory address printed from Lua is correct, but the userdata printed from the C++ function isn't. The two memory addresses should be the same, but for whatever reason the member function is either being passed the incorrect userdata from Lua, or the member function is retrieving the userdata argument incorrectly from Lua. Does anybody see anything wrong with the above code/script? Has anybody experienced anything like this? Any ideas of what could be wrong? Everything has been working perfectly until I get to this point. Could it be a problem with Lunar?