public static boolean canDrop(
      FilterPredicate pred, List<ColumnChunkMetaData> columns, DictionaryPageReadStore dictionaries) {
    Objects.requireNonNull(pred, "pred cannnot be null");
    Objects.requireNonNull(columns, "columns cannnot be null");
    return pred.accept(new DictionaryFilter(columns, dictionaries));
  }
@Test
  public void testInFixed() throws Exception {
    BinaryColumn b = binaryColumn("fixed_field");

    // Only V2 supports dictionary encoding for FIXED_LEN_BYTE_ARRAY values
    if (version == PARQUET_2_0) {
      Set<Binary> set1 = new HashSet<>();
      set1.add(toBinary("-2", 17));
      set1.add(toBinary("-22", 17));
      set1.add(toBinary("12345", 17));
      FilterPredicate predIn1 = in(b, set1);
      FilterPredicate predNotIn1 = notIn(b, set1);
      assertTrue("Should drop block for in (-2, -22, 12345)", canDrop(predIn1, ccmd, dictionaries));
      assertFalse("Should not drop block for notIn (-2, -22, 12345)", canDrop(predNotIn1, ccmd, dictionaries));

      Set<Binary> set2 = new HashSet<>();
      set2.add(toBinary("-1", 17));
      set2.add(toBinary("0", 17));
      set2.add(toBinary("12345", 17));
      assertFalse("Should not drop block for in (-1, 0, 12345)", canDrop(in(b, set2), ccmd, dictionaries));
      assertFalse("Should not drop block for in (-1, 0, 12345)", canDrop(notIn(b, set2), ccmd, dictionaries));
    }

    Set<Binary> set3 = new HashSet<>();
    set3.add(null);
    FilterPredicate predIn3 = in(b, set3);
    FilterPredicate predNotIn3 = notIn(b, set3);
    assertFalse("Should not drop block for null", canDrop(predIn3, ccmd, dictionaries));
    assertFalse("Should not drop block for null", canDrop(predNotIn3, ccmd, dictionaries));
  }