### Question:
ExpressionEvaluator implements ExpressionNodeVisitor<EvaluationResult, Void> { protected Class<?> forClassName(ExpressionLocation location, String className) { try { return classHelper.forName(className); } catch (WrapException e) { throw new ExpressionException( Message.DOMA3005, e.getCause(), location.getExpression(), location.getPosition(), className); } catch (Exception e) { throw new ExpressionException( Message.DOMA3005, e, location.getExpression(), location.getPosition(), className); } } ExpressionEvaluator();  ExpressionEvaluator(ExpressionFunctions expressionFunctions, ClassHelper classHelper);  ExpressionEvaluator(
      Map<String, Value> variableValues,
      ExpressionFunctions expressionFunctions,
      ClassHelper classHelper); void putValue(String variableName, Value value); Value removeValue(String variableName); void add(String variableName, Value value); EvaluationResult evaluate(ExpressionNode node); @Override EvaluationResult visitEqOperatorNode(EqOperatorNode node, Void p); @Override EvaluationResult visitNeOperatorNode(NeOperatorNode node, Void p); @Override EvaluationResult visitGeOperatorNode(GeOperatorNode node, Void p); @Override EvaluationResult visitGtOperatorNode(GtOperatorNode node, Void p); @Override EvaluationResult visitLeOperatorNode(LeOperatorNode node, Void p); @Override EvaluationResult visitLtOperatorNode(LtOperatorNode node, Void p); @Override EvaluationResult visitAndOperatorNode(AndOperatorNode node, Void p); @Override EvaluationResult visitOrOperatorNode(OrOperatorNode node, Void p); @Override EvaluationResult visitNotOperatorNode(NotOperatorNode node, Void p); @Override EvaluationResult visitAddOperatorNode(AddOperatorNode node, Void p); @Override EvaluationResult visitSubtractOperatorNode(SubtractOperatorNode node, Void p); @Override EvaluationResult visitMultiplyOperatorNode(MultiplyOperatorNode node, Void p); @Override EvaluationResult visitDivideOperatorNode(DivideOperatorNode node, Void p); @Override EvaluationResult visitModOperatorNode(ModOperatorNode node, Void p); @Override EvaluationResult visitLiteralNode(LiteralNode node, Void p); @Override EvaluationResult visitParensNode(ParensNode node, Void p); @Override EvaluationResult visitNewOperatorNode(NewOperatorNode node, Void p); @Override EvaluationResult visitMethodOperatorNode(MethodOperatorNode node, Void p); @Override EvaluationResult visitStaticMethodOperatorNode(StaticMethodOperatorNode node, Void p); @Override EvaluationResult visitFunctionOperatorNode(FunctionOperatorNode node, Void p); @Override EvaluationResult visitFieldOperatorNode(FieldOperatorNode node, Void p); @Override EvaluationResult visitStaticFieldOperatorNode(StaticFieldOperatorNode node, Void p); @Override EvaluationResult visitVariableNode(VariableNode node, Void p); @Override EvaluationResult visitCommaOperatorNode(CommaOperatorNode node, Void p); @Override EvaluationResult visitEmptyNode(EmptyNode node, Void p);  }### Answer:
@Test public void testForClassName() { ExpressionEvaluator evaluator = new ExpressionEvaluator(); Class<?> clazz = evaluator.forClassName(location, "java.lang.String"); assertNotNull(clazz); }
@Test public void testForClassName_notFound() { ExpressionEvaluator evaluator = new ExpressionEvaluator(); try { evaluator.forClassName(location, "inexistentClass"); } catch (ExpressionException e) { System.out.println(e.getMessage()); } }