As you say - once you know what's going on it's not that magical at all. It literally looks at the text source for you function definition and injects the arguments you ask for. Certainly, when I first looked at it I felt the docs didn't explain that little nugget so you sort of wonder how your arguments are injected. More of a doc problem than an obfuscation issue, I think.