private boolean automataMatch(RuleEvaluation e) {
        FlattenedItem current = e.currentItem();
        if (current == null) return false;

        Object annotation = current.getItem().getAnnotation(conditionName);
        if (annotation == null) return false;
        if (! (annotation instanceof PhraseMatcher.Phrase)) return false;

        PhraseMatcher.Phrase phrase = (PhraseMatcher.Phrase)annotation;

        Choicepoint choicePoint = e.getChoicepoint(this,true);
        boolean matches = automataMatchPhrase(phrase,e);

        if (!matches && e.isInNegation()) { // TODO: Temporary hack! Works for single items only
            e.addMatch(current,null);
        }

        if ((!matches && !e.isInNegation() || (matches && e.isInNegation())))
            choicePoint.backtrackPosition();

        return matches;
    }
Returns the name of the referenced rule, never null
container-search/src/main/java/com/yahoo/prelude/semantics/rule/ConditionReference.java