XmlAttributeDescriptor (final Map<DAttributePattern, Pair<? extends Map<String, String>, Boolean>> attributes) { if (attributes.size() > 0) { RngXmlAttributeDescriptor d = null; final Set<DAttributePattern> patterns = attributes.keySet(); for (DAttributePattern pattern : patterns) { final Pair<? extends Map<String, String>, Boolean> pair = attributes.get(pattern); final RngXmlAttributeDescriptor a = new RngXmlAttributeDescriptor(this, pattern, pair.first, pair.second); if (d == null) { d = a; } else { d = d.mergeWith(a); } } return d; } else { return null; } }