Hmmm I tried the third method, and it compiled just fine. I have no clue how to call it though. It looks like a circular reference, so I assumed the compiled wouldn't allow it.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler
Please correct my English.
I have a knack for fixing things like this ... um ... sorry ... here is a consilitory tiny ad:
a bit of art, as a gift, the permaculture playing cards