class RowMapperNotNullConstraintsResultSetExtractor extends RowMapperResultSetExtractor {
    /**
     * Field describes condition for NotNullConstraint in String format e.g. "ID" IS NOT NULL |  name = 'foo' | etc.
     */
    private static final String SEARCH_CONDITION_FIELD = "SEARCH_CONDITION";
    private static final String SEARCH_CONDITION = " is not null";

    public RowMapperNotNullConstraintsResultSetExtractor(RowMapper rowMapper) {
        super(rowMapper);

        if (!(rowMapper instanceof ColumnMapRowMapper)) {
            throw new AssertionError(String.format("Class %s should work only with %s",
                    RowMapperNotNullConstraintsResultSetExtractor.class, ColumnMapRowMapper.class));
        }
    }

    @Override
    public Object extractData(ResultSet resultSet) throws SQLException {<FILL_FUNCTION_BODY>}
}

        List<Object> resultList = (this.rowsExpected > 0 ? new ArrayList<>(this.rowsExpected) : new ArrayList<>());
        int rowNum = 0;
        while (resultSet.next()) {
            Map mapOfColValues = (Map) this.rowMapper.mapRow(resultSet, rowNum++);
            Object searchCondition = mapOfColValues.get(SEARCH_CONDITION_FIELD);

            if (searchCondition == null) {
                continue;
            }
            String searchConditionString = searchCondition.toString().toLowerCase();
            if (searchConditionString.contains(" or ") || searchConditionString.contains(" and ")) {
                continue;
            }
            if (!searchConditionString.contains(SEARCH_CONDITION)) {
                continue;
            }

            resultList.add(mapOfColValues);
        }
        return resultList;
    
<methods>public void <init>(liquibase.executor.jvm.RowMapper) ,public void <init>(liquibase.executor.jvm.RowMapper, int) ,public java.lang.Object extractData(java.sql.ResultSet) throws java.sql.SQLException<variables>protected final non-sealed liquibase.executor.jvm.RowMapper rowMapper,protected final non-sealed int rowsExpected