def create_bottom_objects(self):
        """Create objects that lie at the node's bottom."""
        ### create and position foot and remaining corners
        ### using imported surfaces
        ###
        ### the actual surfaces used for the foot and
        ### bottom corners might change if the node is
        ### currently commented out, but we we don't need
        ### to worry about it here (this is taken care of
        ### in another module)

        ## foot

        self.foot = Object2D()
        self.foot.image = NORMAL_NODE_FOOT
        self.foot.rect = self.foot.image.get_rect()

        ## corners

        # bottomleft corner

        bottomleft_corner = Object2D()
        bottomleft_corner.image = NORMAL_BOTTOM_CORNERS[0]
        bottomleft_corner.rect = bottomleft_corner.image.get_rect()
        bottomleft_corner.rect.topright = self.foot.rect.topleft

        # bottomright corner

        bottomright_corner = Object2D()
        bottomright_corner.image = NORMAL_BOTTOM_CORNERS[1]
        bottomright_corner.rect = bottomright_corner.image.get_rect()
        bottomright_corner.rect.topleft = self.foot.rect.topright

        self.corners.append(bottomleft_corner)
        self.corners.append(bottomright_corner)

        ### create and store a rects manager to manage the
        ### position of the objects on the bottom of the
        ### node

        ## get a callable which returns the rects to be
        ## managed

        get_bottom_rects = (
            bottomleft_corner.rect,
            bottomright_corner.rect,
            self.foot.rect,
        ).__iter__

        ## use it to instantiate the rects manager and
        ## store it on its own attribute
        self.bottom_rectsman = RectsManager(get_bottom_rects)
Create objects that lie at the node's bottom.
nodezator/graphman/callablenode/vizprep/main.py