added throws StackOverflowError to evaluate