boolean (Processor processor, XmlTag[] tags) { for (XmlTag tag : tags) { if (myName.equals(tag.getName())) { if (!processor.process(this, tag)) { return false; } } if (GROUP.myName.equals(tag.getName())) { if (this == ACTION && !processRecursively(processor, tag.findSubTags(ACTION.myName))) return false; if (!processRecursively(processor, tag.findSubTags(GROUP.myName))) return false; } } return true; }