@Override public Object evaluate(ExpressionContext context) throws ExpressionExecutionException { Object thisElement = null; IEvaluationContext evaluationContext = contextProvider.get(); evaluationContext.newValue(XbaseScopeProvider.THIS, thisElement); if (context != null) { for (String elementName : context.getVariableNames()) { Object instance = context.getInstance(elementName); if (instance == null && context instanceof DynamicExpressionContext) { instance = ((DynamicExpressionContext) context).getDynInstance(elementName); } if (instance != null) { evaluationContext.newValue(QualifiedName.create(elementName), instance); } } } else { context = new ExpressionContext(); } IEvaluationResult result = elInterpreter.evaluate(xExpression, evaluationContext, CancelIndicator.NullImpl); if (result.getException() != null) { throw new ExpressionExecutionException("Boo!", result.getException()); } return result.getResult(); }