def reposition_scrollable_contents(self):
        """Reposition contents inside the body.

        Contents are the arrows, scroll area and children.
        As implied by the contents list in the previous
        sentence, this method is used to reposition the
        contents of body inside it when besides the children
        the menu also have additional objects to support
        scrolling which must also be positioned in the
        menu's body.
        """
        ### get topleft coordinates of the body rect,
        ### with a small offset

        offset = 1, 1
        topleft = self.body.rect.move(offset).topleft

        ### position arrows and scroll area relative to
        ### the topleft defined above and one another

        self.up_arrow.rect.topleft = topleft

        self.scroll_area.topleft = self.up_arrow.rect.bottomleft

        self.down_arrow.rect.topleft = self.scroll_area.bottomleft

        ### position children relative to the scroll area
        ### topleft coordinates

        self.children.rect.topleft = self.scroll_area.topleft

        ## position children one on top of the other

        self.children.rect.snap_rects_ip(
            retrieve_pos_from="bottomleft",
            assign_pos_to="topleft",
        )
Reposition contents inside the body.

        Contents are the arrows, scroll area and children.
        As implied by the contents list in the previous
        sentence, this method is used to reposition the
        contents of body inside it when besides the children
        the menu also have additional objects to support
        scrolling which must also be positioned in the
        menu's body.
        
nodezator/menu/submenu/scroll.py