added Compiler.memoize()