Track source node via accept call rather vs opcode
Move compileProgram out of visitor methods