class RightExpression implements Expression {

    @Override
    public ExpressionResult apply(ExpressionContext context, ExpressionResult input) {
        ExpressionResult value = valueExpression.apply(context, input);
        if( value == null || ! value.isNonNull() ) return  NullExpressionResult.INSTANCE;

        int chars = charsExpression.apply(context, input).getNumericValue().intValue();

        String string = value.toString();
        if( string.length() < chars) return new StringExpressionResult(string);
        return new StringExpressionResult(string.substring(string.length()-chars));
    }

    public  RightExpression(String alias, Expression[] expressions);

}