cleanup
use correct prototype when duplicating objects; fix bad test
test for prototype of duplicated objects
start refactoring AST node-related methods into a new module (+ cleanup)