getAllowRendering() methods which wraps all calls to the writer within the ASTNode renders and account for 11% of the time. I'm a little surprised by this because it just returns a member, but it may be due to the multiple layers of delegates and interfaces. From what I can tell, the purpose of this method is to serve the #stop directive (which the documentation claims is for debugging). I've always thought that #stop stopped execution of the script, but it doesn't, it continues executing the script and doesn't write anything to the writer, Yikes. I wonder if this shouldn't be implemented like #break, by throwing an exception which is caught at the top. Execution of the script would stop, and getAllowRendering could be removed.