An Element. This
can be any Element in
the Soup but ideally should be one closely associated with this
Element.

options

Options related to creation. For example this allows you to
determine whether the Element should be created
using an IndirectObject rather than just an Atom. If not provided a
default set of options is used.

The different constructors allow different ways of creating an
Element. Some are used
for wrapping existing Atoms or IndirectObjects and others are for
creating new ones.

The constructor taking a relation Element creates a new object
in the document - it is typically the constructor you will want to
use. Do not specify creation options unless you have very specific
needs.

However for your first Element - one you can use as a
relation for the others - you will need to wrap an existing
IndirectObject inside an Element. For this you might
use code of the following form "CatalogElement
root = new CatalogElement(doc.ObjectSoup.Catalog)".

The parameterless constructor allows you to create an empty
Element. By empty we
mean it has no contents - no Atom within it. So before use an Atom
must be Assigned or Created. In practice it is easiest to do this
using one of the other constructors.

The atom and host constructor is used to wrap an existing Atom.
It creates an Element
and then Assigns the Atom to it. The result is a specialized
Element which can be
used to examine or modify the contents of the Atom.

[VB]If parent.EntryK Is Nothing Then
parent.EntryK = New ArrayElement(Of Element)(parent)
End If
If index > parent.EntryK.Count Then
index = parent.EntryK.Count
End If
parent.EntryK.Insert(index, element)

This code snippet is taken from Annotations.cs line 81 in the
Annotations example project.