@classmethod
def link(cls, other, share_redraw_state=True):
    """Create a new shape that shares its data with a source shape.

        Common values that are set in `other` will be set in this shape.

        :param other: Other shape to link this one to
        :param share_redraw_state: If True, share the redrawing state (for dynamic visualization backends) with `other`
        """
    result = cls.copy(other)
    result._attributes = other._attributes
    if share_redraw_state:
        result._dirty_attributes = other._dirty_attributes
    return result
