Assign an IndirectObject to this Element.
The process of assignment allows an existing IndirectObject to
be viewed through the lens of a particular type of Element.
It is important to ensure that IndirectObjects are assigned to
appropriate types of Element.
For example, while is is possible to assign a Page Indirect
Object to an Image
Element, such an assignment is not
going to produce any useful view of the data.
In addition, some assignments cannot be made at all. This occurs
if if the underlying atom types are inconsistent.
For example a ColorSpaceElement
is based around an ArrayAtom, so attempting to
assign an IndirectObject which contains a DictAtom will result in
Classes that inherit from this one may wish to override this
function to ensure that the Atom type that is provided is