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 testColumnWithDictionaryAndPlainEncodings() throws Exception {
    IntColumn plain = intColumn("fallback_binary_field");
    DictionaryPageReadStore dictionaryStore = mock(DictionaryPageReadStore.class);

    assertFalse("Should never drop block using plain encoding", canDrop(eq(plain, -10), ccmd, dictionaryStore));

    assertFalse("Should never drop block using plain encoding", canDrop(lt(plain, -10), ccmd, dictionaryStore));

    assertFalse("Should never drop block using plain encoding", canDrop(ltEq(plain, -10), ccmd, dictionaryStore));

    assertFalse(
        "Should never drop block using plain encoding",
        canDrop(gt(plain, nElements + 10), ccmd, dictionaryStore));

    assertFalse(
        "Should never drop block using plain encoding",
        canDrop(gtEq(plain, nElements + 10), ccmd, dictionaryStore));

    assertFalse(
        "Should never drop block using plain encoding",
        canDrop(notEq(plain, nElements + 10), ccmd, dictionaryStore));

    verifyZeroInteractions(dictionaryStore);
  }