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 testUdpMissingColumn() throws Exception {
    InInt32UDP nullRejecting = new InInt32UDP(ImmutableSet.of(42));
    InInt32UDP nullAccepting = new InInt32UDP(Sets.newHashSet((Integer) null));
    IntColumn fake = intColumn("missing_column");

    assertTrue(
        "Should drop block for null rejecting udp",
        canDrop(userDefined(fake, nullRejecting), ccmd, dictionaries));
    assertFalse(
        "Should not drop block for null accepting udp",
        canDrop(userDefined(fake, nullAccepting), ccmd, dictionaries));
  }