class ExpressionConverter implements ExpressionVisitor<RexNode> {

	@Override
	public RexNode visit(CallExpression call) {
		for (CallExpressionConvertRule rule : FUNCTION_CONVERT_CHAIN) {
			Optional<RexNode> converted = rule.convert(call, newFunctionContext());
			if (converted.isPresent()) {
				return converted.get();
			}
		}
		throw new RuntimeException("Unknown call expression: " + call);
	}

	public  ExpressionConverter(RelBuilder relBuilder);

}