private boolean processEnumerationImpl(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();
  }
private boolean processEnumerationImpl(final XmlTag declaration,
                                         @Nullable ComplexTypeDescriptor type,
                                         final PairProcessor<? super PsiElement, ? super String> pairProcessor,
                                         boolean forCompletion)