@Override
  public Attribute set(final int index, final Attribute attribute) {
    if (index < 0 || index >= size) {
      throw new IndexOutOfBoundsException("Index: " + index +
                                          " Size: " + size());
    }

    if (attribute.getParent() != null) {
      throw new IllegalAddException(
        "The attribute already has an existing parent \"" +
        attribute.getParent().getQualifiedName() + "\"");
    }

    final int duplicate = indexOfDuplicate(attribute);
    if ((duplicate >= 0) && (duplicate != index)) {
      throw new IllegalAddException("Cannot set duplicate attribute");
    }

    final String reason = Verifier.checkNamespaceCollision(attribute, parent, index);
    if (reason != null) {
      throw new IllegalAddException(parent, attribute, reason);
    }

    final Attribute old = attributeData[index];
    old.setParent(null);

    attributeData[index] = attribute;
    attribute.setParent(parent);
    return old;
  }
@Override
  public Attribute set(final int index, final Attribute attribute)