boolean (final XmlTag declaration, @Nullable ComplexTypeDescriptor type, final PairProcessor<? super PsiElement, ? super String> pairProcessor, boolean forCompletion) { XmlAttribute name = declaration.getAttribute("name"); if (name != null && "boolean".equals(name.getValue()) && type != null) { XmlNSDescriptorImpl nsDescriptor = type.getNsDescriptor(); if (nsDescriptor != null) { String namespace = nsDescriptor.getDefaultNamespace(); if (XmlUtil.XML_SCHEMA_URI.equals(namespace)) { XmlAttributeValue valueElement = name.getValueElement(); pairProcessor.process(valueElement, "true"); pairProcessor.process(valueElement, "false"); if (!forCompletion) { pairProcessor.process(valueElement, "1"); pairProcessor.process(valueElement, "0"); } myExhaustiveEnum = true; return true; } } } final Ref<Boolean> found = new Ref<>(Boolean.FALSE); myExhaustiveEnum = XmlUtil.processEnumerationValues(declaration, tag -> { found.set(Boolean.TRUE); XmlAttribute name1 = tag.getAttribute("value"); return name1 == null || pairProcessor.process(tag, name1.getValue()); }); return found.get(); }