code: public FilterRuleChain<String> parseChain(Element xmlElement, FilterRuleChain<String> parent) {
  
      boolean defaultResult = this.domUtil.getAttributeAsBoolean(xmlElement, XML_ATR_CHAIN_DEFAULT, true);
      List<FilterRule<String>> rules = new ArrayList<>();
      NodeList childList = xmlElement.getChildNodes();
      for (int childIndex = 0; childIndex < childList.getLength(); childIndex++) {
        Node node = childList.item(childIndex);
        if (node.getNodeType() == Node.ELEMENT_NODE) {
          Element child = (Element) node;
          Boolean include = null;
          if (child.getTagName().equals(XML_TAG_RULE_INCLUDE)) {
            include = Boolean.TRUE;
          } else if (child.getTagName().equals(XML_TAG_RULE_EXCLUDE)) {
            include = Boolean.FALSE;
          } else {
            // ignore unknown tag...
          }
          if (include != null) {
            FilterRule<String> rule = null;
            if (child.hasAttribute(XML_ATR_RULE_PATTERN)) {
              String pattern = child.getAttribute(XML_ATR_RULE_PATTERN);
              rule = new PatternFilterRule(pattern, include.booleanValue());
            }
            if (rule != null) {
              rules.add(rule);
            }
          }
        }
      }
      if (rules.size() == 0) {
        throw new IllegalArgumentException("No rule found in element '" + xmlElement.getTagName() + "'!");
      }
      FilterRule<String>[] ruleArray = rules.toArray(new FilterRule[rules.size()]);
      FilterRuleChain<String> chain;
      if (parent == null) {
        chain = new FilterRuleChain<>(defaultResult, ruleArray);
      } else {
        chain = parent.extend(defaultResult, ruleArray);
      }
      return chain;
    }
docs: This method parses a {@link FilterRuleChain chain} given as XML via {@code xmlElement}.
  
  @param xmlElement is the XML element containing the filter-rules (see {@link #XML_TAG_RULE_INCLUDE} and
  {@link #XML_TAG_RULE_EXCLUDE}) as children. Unknown child elements or attributes are simply ignored.
  @param parent is the parent chain that is to be extended by the chain to parse.
  @return the parsed filter-chain.