@Override public Matcher visit(IsNull isNull) { return isNull .getField() .accept( new VisitorAdapter<Matcher>() { @Override public Matcher visit(final Field field) { return new Matcher() { @Override public boolean match(DataRecord record) { return record.get(field.getFieldMetadata()) == null; } }; } @Override public Matcher visit(StagingBlockKey stagingBlockKey) { return new Matcher() { @Override public boolean match(DataRecord record) { return record .getRecordMetadata() .getRecordProperties() .get(StagingStorage.METADATA_STAGING_BLOCK_KEY) == null; } }; } }); }