def draw_scrollable_contents(self):
        """Draw body, children and scrolling objects.

        Used when the menu is scrollable and in addition to
        drawing the body and children must also clean the
        image surface first and also draw the scrolling
        arrows.
        """
        ### draw contents on body after cleaning it then
        ### finally draw the body on the screen with a
        ### special outline to convey depth

        ## clean body
        self.body.image.blit(self.clean_bg, (0, 0))

        ## draw children colliding with the scroll area
        self.draw_children_on_scroll_area()

        ## draw arrows
        self.draw_arrows()

        ## draw the body
        self.body.draw()

        ### check if there's a expanded child in the
        ### scrollable area and call the drawing method
        ### stored in its draw_body_and_its_contents
        ### attribute

        ## retrieve children on scroll_area

        visible_children = (
            child for child in self.children if self.scroll_area.colliderect(child.rect)
        )

        ## iterate over children looking for the expanded
        ## menu

        for child in visible_children:

            # check the existence of an 'is_expanded'
            # attribute
            try:
                is_expanded = child.is_expanded

            # it might be however, that it doesn't
            # have an is_expanded attribute, in which
            # case it is a command; just pass, then;
            except AttributeError:
                pass

            # if 'is_expanded' attribute is True, call its
            # draw_body_and_its_contents method; in this
            # case also break out of the for loop, since
            # there can't be more than one expanded
            # child between siblings at the same time
            # (that is, this is the only one we'll find)

            else:

                if is_expanded:

                    child.draw_body_and_its_contents()
                    break
Draw body, children and scrolling objects.

        Used when the menu is scrollable and in addition to
        drawing the body and children must also clean the
        image surface first and also draw the scrolling
        arrows.
        
nodezator/menu/submenu/scroll.py