/// <summary>Adds a node as child to this node.</summary>
 /// <param name="index">
 /// the index of the node <em>before</em> which the new one is inserted.
 /// <em>Note:</em> The node children are indexed from [1..size]!
 /// An index of size + 1 appends a node.
 /// </param>
 /// <param name="node">an XMPNode</param>
 /// <exception cref="Com.Adobe.Xmp.XMPException"></exception>
 public virtual void AddChild(int index, Com.Adobe.Xmp.Impl.XMPNode node)
 {
     AssertChildNotExisting(node.GetName());
     node.SetParent(this);
     GetChildren().Add(index - 1, node);
 }
 /// <summary>Appends a qualifier to the qualifier list and sets respective options.</summary>
 /// <param name="qualNode">a qualifier node.</param>
 /// <exception cref="Com.Adobe.Xmp.XMPException"></exception>
 public virtual void AddQualifier(Com.Adobe.Xmp.Impl.XMPNode qualNode)
 {
     AssertQualifierNotExisting(qualNode.GetName());
     qualNode.SetParent(this);
     qualNode.GetOptions().SetQualifier(true);
     GetOptions().SetHasQualifiers(true);
     // contraints
     if (qualNode.IsLanguageNode())
     {
         // "xml:lang" is always first and the option "hasLanguage" is set
         options.SetHasLanguage(true);
         GetQualifier().Add(0, qualNode);
     }
     else
     {
         if (qualNode.IsTypeNode())
         {
             // "rdf:type" must be first or second after "xml:lang" and the option "hasType" is set
             options.SetHasType(true);
             GetQualifier().Add(!options.GetHasLanguage() ? 0 : 1, qualNode);
         }
         else
         {
             // other qualifiers are appended
             GetQualifier().Add(qualNode);
         }
     }
 }
 /// <summary>Adds a node as child to this node.</summary>
 /// <param name="node">an XMPNode</param>
 /// <exception cref="Com.Adobe.Xmp.XMPException"></exception>
 public virtual void AddChild(Com.Adobe.Xmp.Impl.XMPNode node)
 {
     // check for duplicate properties
     AssertChildNotExisting(node.GetName());
     node.SetParent(this);
     GetChildren().Add(node);
 }