Returns a **flatten** list of ``('field path', field item)`` tuples
        for the `Pointer` field itself and for each :class:`Field` *nested* in the
        :attr:`data` object referenced by the `Pointer` field.

        :param str path: path of the `Pointer` field.
        :keyword bool nested: if ``True`` all :class:`Pointer` fields in the
            :attr:`data` object referenced by the `Pointer` field lists their
            referenced :attr:`~Pointer.data` object field items as well
            (chained method call).

def field_items(self, path=str(), **options):
        """ Returns a **flatten** list of ``('field path', field item)`` tuples
        for the `Pointer` field itself and for each :class:`Field` *nested* in the
        :attr:`data` object referenced by the `Pointer` field.

        :param str path: path of the `Pointer` field.
        :keyword bool nested: if ``True`` all :class:`Pointer` fields in the
            :attr:`data` object referenced by the `Pointer` field lists their
            referenced :attr:`~Pointer.data` object field items as well
            (chained method call).
        """
        items = list()
        # Field
        items.append((path if path else 'field', self))
        # Data Object
        data_path = '{0}.{1}'.format(path, 'data') if path else 'data'
        # Container
        if is_container(self._data):
            for field_item in self._data.field_items(data_path, **options):
                items.append(field_item)
        # Pointer
        elif is_pointer(self._data) and get_nested(options):
            for field_item in self._data.field_items(data_path, **options):
                items.append(field_item)
        # Field
        elif is_field(self._data):
            items.append((data_path, self._data))
        return items