void (Element element) { super.writeExternal(element); if (!regExp.isEmpty()) element.setAttribute(REGEXP, regExp); if (!nameOfExprType.isEmpty()) element.setAttribute(NAME_OF_EXPRTYPE, nameOfExprType); if (!referenceConstraint.isEmpty()) element.setAttribute(REFERENCE_CONDITION, referenceConstraint); if (!nameOfFormalArgType.isEmpty()) element.setAttribute(NAME_OF_FORMALTYPE, nameOfFormalArgType); if (withinHierarchy) element.setAttribute(WITHIN_HIERARCHY, TRUE); if (exprTypeWithinHierarchy) element.setAttribute(EXPRTYPE_WITHIN_HIERARCHY, TRUE); if (formalArgTypeWithinHierarchy) element.setAttribute(FORMALTYPE_WITHIN_HIERARCHY, TRUE); if (minCount != 1) element.setAttribute(MIN_OCCURS, String.valueOf(minCount)); if (maxCount != 1) element.setAttribute(MAX_OCCURS, String.valueOf(maxCount)); if (partOfSearchResults) element.setAttribute(TARGET, TRUE); if (invertRegExp) element.setAttribute(NEGATE_NAME_CONDITION, TRUE); if (invertExprType) element.setAttribute(NEGATE_EXPRTYPE_CONDITION, TRUE); if (invertFormalType) element.setAttribute(NEGATE_FORMALTYPE_CONDITION, TRUE); if (invertReference) element.setAttribute(NEGATE_REFERENCE_CONDITION, TRUE); if (wholeWordsOnly) element.setAttribute(WHOLE_WORDS_ONLY, TRUE); if (invertContainsConstraint) element.setAttribute(NEGATE_CONTAINS_CONDITION, TRUE); if (invertWithinConstraint) element.setAttribute(NEGATE_WITHIN_CONDITION, TRUE); element.setAttribute(WITHIN_CONDITION, withinConstraint); element.setAttribute(CONTAINS_CONDITION, containsConstraint); if (!contextConstraint.isEmpty()) element.setAttribute(CONTEXT, contextConstraint); if (additionalConstraints != null && !additionalConstraints.isEmpty()) { List<String> list = ContainerUtil.sorted(additionalConstraints.keySet()); for (String key : list) { final String value = additionalConstraints.get(key); if (value != null) { element.setAttribute('_' + key, value); } } } }