static Result coerceUserList(
      final Collection<Expression> expressions,
      final ExpressionTypeManager typeManager
  ) {
    return coerceUserList(expressions, typeManager, Collections.emptyMap());
  }
@Test
  public void shouldCoerceStructOfCompatibleLiterals() {
    // Given:
    final ImmutableList<Expression> expressions = ImmutableList.of(
        new CreateStructExpression(
            ImmutableList.of(
                new Field("a", new IntegerLiteral(10))
            )
        ),
        new CreateStructExpression(
            ImmutableList.of(
                new Field("a", new StringLiteral("123456789000"))
            )
        )
    );

    // When:
    final Result result = CoercionUtil.coerceUserList(expressions, typeManager);

    // Then:
    final SqlStruct sqlStruct = SqlTypes.struct().field("a", SqlTypes.BIGINT).build();
    assertThat(result.commonType(), is(Optional.of(
        sqlStruct)));
    assertThat(result.expressions(), is(ImmutableList.of(
        cast(new CreateStructExpression(
            ImmutableList.of(
                new Field("a", new IntegerLiteral(10))
            )
        ), sqlStruct),
        cast(new CreateStructExpression(
            ImmutableList.of(
                new Field("a", new StringLiteral("123456789000"))
            )
        ), sqlStruct)
    )));
  }