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

    assertThat(ParamTypes.areCompatible(
        SqlArgument.of(SqlTypes.STRING),
        GenericType.of("T"),
        false),
        is(false));

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

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

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

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


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