class AbstractExpressionContext extends AbstractContext implements IExpressionContext {

    private final IEngineConfiguration configuration;
    private IExpressionObjects expressionObjects = null;



    protected AbstractExpressionContext(final IEngineConfiguration configuration) {
        super();
        Validate.notNull(configuration, "Configuration cannot be null");
        this.configuration = configuration;
    }


    protected AbstractExpressionContext(final IEngineConfiguration configuration, final Locale locale) {
        super(locale);
        Validate.notNull(configuration, "Configuration cannot be null");
        this.configuration = configuration;
    }


    protected AbstractExpressionContext(
            final IEngineConfiguration configuration, final Locale locale, final Map<String, Object> variables) {
        super(locale, variables);
        Validate.notNull(configuration, "Configuration cannot be null");
        this.configuration = configuration;
    }



    @Override
    public final IEngineConfiguration getConfiguration() {
        return this.configuration;
    }


    @Override
    public IExpressionObjects getExpressionObjects() {<FILL_FUNCTION_BODY>}


}

        // We delay creation of expression objects in case they are not needed at all
        if (this.expressionObjects == null) {
            this.expressionObjects = new ExpressionObjects(this, this.configuration.getExpressionObjectFactory());
        }
        return this.expressionObjects;
    
<methods>public void clearVariables() ,public final boolean containsVariable(java.lang.String) ,public final java.util.Locale getLocale() ,public final java.lang.Object getVariable(java.lang.String) ,public final Set<java.lang.String> getVariableNames() ,public void removeVariable(java.lang.String) ,public void setLocale(java.util.Locale) ,public void setVariable(java.lang.String, java.lang.Object) ,public void setVariables(Map<java.lang.String,java.lang.Object>) <variables>private java.util.Locale locale,private final non-sealed Map<java.lang.String,java.lang.Object> variables