add @Lazy annotation
add Visitable and Memoize annotations