}
for (int i = 0; i < reader.getAttributeCount(); i++) {
requireNoNamespaceAttribute(reader, i);
final String attrValue = reader.getAttributeValue(i);
final JacORBAttribute attribute = JacORBAttribute.forName(reader.getAttributeLocalName(i));
// check for unexpected attributes.
if (!expectedAttributes.contains(attribute))
throw unexpectedAttribute(reader, i);
// check for duplicate attributes.
if (!parsedAttributes.add(attribute)) {
throw duplicateAttribute(reader, attribute.getLocalName());
}
requiredAttributes.remove(attribute);
node.get(attribute.getLocalName()).set(attrValue);
}
// throw an exception if a required attribute wasn't found.
if (!requiredAttributes.isEmpty()) {
throw missingRequired(reader, requiredAttributes);