public DrlxParseResult drlxParse(Class<?> patternType, String bindingId, String expression) {
        return drlxParse(patternType, bindingId, expression, false);
    }
@Test
    public void testNullSafeExpressionsWithContains() {
        SingleDrlxParseSuccess result = (SingleDrlxParseSuccess) parser.drlxParse(Person.class, "$p", "address!.city contains (\"Mi\")");

        List<Expression> nullSafeExpressions = result.getNullSafeExpressions();
        assertThat(nullSafeExpressions).hasSize(1);
        assertThat(nullSafeExpressions.get(0).toString()).isEqualTo("_this.getAddress() != null");

        // null check is done after the first constraint
        assertThat(result.getExpr().toString()).isEqualTo("D.eval(org.drools.model.operators.ContainsOperator.INSTANCE, _this.getAddress().getCity(), \"Mi\")");
    }