<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def origination(self):
 """ Property for a list of live shapes or a line. Some of the vector masks have associated live shape properties, that are Photoshop feature to handle primitive shapes such as a rectangle, an ellipse, or a line. Vector masks without live shape properties are plain path objects. See :py:mod:`psd_tools.api.shape`. :return: List of :py:class:`~psd_tools.api.shape.Invalidated`, :py:class:`~psd_tools.api.shape.Rectangle`, :py:class:`~psd_tools.api.shape.RoundedRectangle`, :py:class:`~psd_tools.api.shape.Ellipse`, or :py:class:`~psd_tools.api.shape.Line`. """

        if not hasattr(self, '_origination'):
            data = self.tagged_blocks.get_data('VECTOR_ORIGINATION_DATA', {})
            self._origination = [
                Origination.create(x) for x
                in data.get(b'keyDescriptorList', [])
                if not data.get(b'keyShapeInvalidated')
            ]
        return self._origination