Recursion test.
Remove wrong test.
Support returning NULL pointers.
Allow functions to be used before declared.