code: private void validateAttributeGeneralization(final Attributes atts) {
          final QName[][] d = domains.peekFirst();
          if (d != null) {
              for (final QName[] spec: d) {
                  for (int i = spec.length - 1; i > -1; i--) {
                      if (atts.getValue(spec[i].getNamespaceURI(), spec[i].getLocalPart()) != null) {
                          for (int j = i - 1; j > -1; j--) {
                              if (atts.getValue(spec[j].getNamespaceURI(), spec[j].getLocalPart()) != null) {
                                  logger.error(MessageUtils.getMessage("DOTJ058E",
                                          spec[j].toString(), spec[i].toString()).toString());
                              }
                          }
                      }
                  }
              }
          }
      }
docs: Validate attribute generalization. A single element may not contain both generalized and specialized values for the same attribute.
  
  @param atts attributes
  @see <a href="http://docs.oasis-open.org/dita/v1.2/os/spec/archSpec/attributegeneralize.html">DITA 1.2 specification</a>