public SqlType getExpressionSqlType(final Expression expression) {
    return getExpressionSqlType(expression, Collections.emptyMap());
  }
@Test
  public void shouldEvaluateLambdaArgsToType() {
    // Given:
    givenUdfWithNameAndReturnType("TRANSFORM", SqlTypes.STRING);
    when(function.parameters()).thenReturn(
        ImmutableList.of(
            ArrayType.of(DoubleType.INSTANCE),
            StringType.INSTANCE,
            LambdaType.of(
                ImmutableList.of(
                    DoubleType.INSTANCE,
                    StringType.INSTANCE
                ),
                StringType.INSTANCE)));
    final Expression expression =
        new FunctionCall(
            FunctionName.of("TRANSFORM"),
            ImmutableList.of(
                ARRAYCOL,
                new StringLiteral("Q"),
                new LambdaFunctionCall(
                    ImmutableList.of("A", "B"),
                    new ArithmeticBinaryExpression(
                        Operator.ADD,
                        new LambdaVariable("A"),
                        new LambdaVariable("B"))
                )));

    // When:
    final KsqlStatementException e = assertThrows(
        KsqlStatementException.class,
        () -> expressionTypeManager.getExpressionSqlType(expression)
    );

    // Then:
    assertThat(e.getUnloggedMessage(), Matchers.containsString("Error processing expression: (A + B). Unsupported arithmetic types. DOUBLE STRING" +
                                                               System.lineSeparator() +
                                                               "Statement: (A + B)"));
    assertThat(e.getMessage(), Matchers.is(
        "Error processing expression."));
  }