private static boolean containsIdField(ExpressionOperator expression) {
        if (expression == null) {
            return false;
        }
        for (ExpressionItem item : expression.getChildren()) {
            if (item instanceof ExpressionTerm) {
                ExpressionTerm term = (ExpressionTerm) item;
                if (MetaFields.ID.getFldName().equals(term.getField())) {
                    return true;
                }
                if (MetaFields.PARENT_ID.getFldName().equals(term.getField())) {
                    return true;
                }
                if (MetaFields.META_INTERNAL_PROCESSOR_ID.equals(term.getField())) {
                    return true;
                }
            } else if (item instanceof ExpressionOperator) {
                if (containsIdField((ExpressionOperator) item)) {
                    return true;
                }
            }
        }
        return false;
    }
Collection of utility methods relating to processor filters
stroom-processor/stroom-processor-api/src/main/java/stroom/processor/api/ProcessorFilterUtil.java