def flow(self, container, last_descender, state=None, **kwargs):
        """Flow this flowable into `container` and return the vertical space
        consumed.

        The flowable's contents is preceded by a vertical space with a height
        as specified in its style's `space_above` attribute. Similarly, the
        flowed content is followed by a vertical space with a height given
        by the `space_below` style attribute."""
        top_to_baseline = 0
        state = state or self.initial_state(container)
        if state.initial:
            space_above = self.get_style('space_above', container)
            if not container.advance2(float(space_above)):
                raise EndOfContainer(state)
            top_to_baseline += float(space_above)
        margin_left = self.get_style('margin_left', container)
        margin_right = self.get_style('margin_right', container)
        reference_id = self.get_id(container.document, create=False)
        right = container.width - margin_right
        container.register_styled(self, continued=not state.initial)
        margin_container = InlineDownExpandingContainer('MARGIN', container,
                                                        left=margin_left,
                                                        right=right)
        initial_before = state.initial
        state, width, inner_top_to_baseline, descender = \
            self.flow_inner(margin_container, last_descender,
                            state=state, **kwargs)
        self._align(margin_container, width)
        initial_after = state is not None and state.initial
        top_to_baseline += inner_top_to_baseline

        if self.annotation:
            height = float(margin_container.height)
            margin_container.canvas.annotate(self.annotation,
                                             0, 0, width, height)
        self.mark_page_nonempty(container)
        if initial_before and not initial_after:
            if reference_id:
                self.create_destination(margin_container, True)

        if state is not None:
            raise EndOfContainer(state)

        space_below = self.get_style('space_below', container)
        container.advance2(float(space_below), ignore_overflow=True)
        container.document.progress(self, container)
        return margin_left + width + margin_right, top_to_baseline, descender
Flow this flowable into `container` and return the vertical space
        consumed.

        The flowable's contents is preceded by a vertical space with a height
        as specified in its style's `space_above` attribute. Similarly, the
        flowed content is followed by a vertical space with a height given
        by the `space_below` style attribute.