<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_guest_property(self, property_p, value, flags):
 """Sets, changes or deletes an entry in the machine's guest property store. in property_p of type str The name of the property to set, change or delete. in value of type str The new value of the property to set, change or delete. If the property does not yet exist and value is non-empty, it will be created. If the value is @c null or empty, the property will be deleted if it exists. in flags of type str Additional property parameters, passed as a comma-separated list of "name=value" type entries. raises :class:`OleErrorAccessdenied` Property cannot be changed. raises :class:`OleErrorInvalidarg` Invalid @a flags. raises :class:`VBoxErrorInvalidVmState` Virtual machine is not mutable or session not open. raises :class:`VBoxErrorInvalidObjectState` Cannot set transient property when machine not running. """

        if not isinstance(property_p, basestring):
            raise TypeError("property_p can only be an instance of type basestring")
        if not isinstance(value, basestring):
            raise TypeError("value can only be an instance of type basestring")
        if not isinstance(flags, basestring):
            raise TypeError("flags can only be an instance of type basestring")
        self._call("setGuestProperty",
                     in_p=[property_p, value, flags])