public static boolean areCompatible(final SqlArgument actual, final ParamType declared) {
    return areCompatible(actual, declared, false);
  }
@Test
  public void shouldPassCompatibleSchemas() {
    assertThat(ParamTypes.areCompatible(
        SqlArgument.of(SqlTypes.STRING),
        ParamTypes.STRING,
        false),
        is(true));

    assertThat(ParamTypes.areCompatible(
        SqlArgument.of(SqlIntervalUnit.INSTANCE),
        ParamTypes.INTERVALUNIT,
        true),
        is(true));

    assertThat(
        ParamTypes.areCompatible(
            SqlArgument.of(SqlTypes.array(SqlTypes.INTEGER)),
            ArrayType.of(ParamTypes.INTEGER),
            false),
        is(true));

    assertThat(ParamTypes.areCompatible(
        SqlArgument.of(SqlTypes.struct().field("a", SqlTypes.decimal(1, 1)).build()),
        StructType.builder().field("a", ParamTypes.DECIMAL).build(),
        false),
        is(true));

    assertThat(ParamTypes.areCompatible(
        SqlArgument.of(SqlTypes.map(SqlTypes.INTEGER, SqlTypes.decimal(1, 1))),
        MapType.of(ParamTypes.INTEGER, ParamTypes.DECIMAL),
        false),
        is(true));

    assertThat(ParamTypes.areCompatible(
        SqlArgument.of(SqlLambdaResolved.of(ImmutableList.of(SqlTypes.STRING), SqlTypes.STRING)),
        LambdaType.of(ImmutableList.of(ParamTypes.STRING), ParamTypes.STRING),
        false),
        is(true));
  }