class MatchExpression implements Expression, PipeExpression {

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

        ExpressionResult pattern = patternExpression.apply(context, input);
        return BooleanExpressionResult.forValue(value.toString().matches(pattern.toString()));
    }

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

}