Returns the **metadata** of a `Field` as an
        :class:`ordered dictionary <collections.OrderedDict>`.

        .. code-block:: python

            metadata = {
                'address': self.index.address,
                'alignment': [self.alignment.byte_size, self.alignment.bit_offset],
                'class': self.name,
                'index': [self.index.byte, self.index.bit],
                'name': name if name else self.name,
                'order': self.byte_order.value,
                'size': self.bit_size,
                'type': Field.item_type.name,
                'value': self.value
            }

        :param str name: optional name for the `Field`.
            Fallback is the class name.
        :keyword bool nested: if ``True`` a :class:`Pointer` field lists its
            referenced :attr:`~Pointer.data` object fields as well
            (chained method call). Default is ``True``.

def describe(self, name=str(), **options):
        """ Returns the **metadata** of a `Field` as an
        :class:`ordered dictionary <collections.OrderedDict>`.

        .. code-block:: python

            metadata = {
                'address': self.index.address,
                'alignment': [self.alignment.byte_size, self.alignment.bit_offset],
                'class': self.name,
                'index': [self.index.byte, self.index.bit],
                'name': name if name else self.name,
                'order': self.byte_order.value,
                'size': self.bit_size,
                'type': Field.item_type.name,
                'value': self.value
            }

        :param str name: optional name for the `Field`.
            Fallback is the class name.
        :keyword bool nested: if ``True`` a :class:`Pointer` field lists its
            referenced :attr:`~Pointer.data` object fields as well
            (chained method call). Default is ``True``.
        """
        metadata = {
            'address': self.index.address,
            'alignment': list(self.alignment),
            'class': self.name,
            'order': self.byte_order.value,
            'index': [self.index.byte, self.index.bit],
            'name': name if name else self.name,
            'size': self.bit_size,
            'type': Field.item_type.name,
            'value': self.value
        }
        return OrderedDict(sorted(metadata.items()))