<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def on_storage_device_change(self, medium_attachment, remove, silent):
 """Triggered when attached storage devices of the associated virtual machine have changed. in medium_attachment of type :class:`IMediumAttachment` The medium attachment which changed. in remove of type bool TRUE if the device is removed, FALSE if it was added. in silent of type bool TRUE if the device is is silently reconfigured without notifying the guest about it. raises :class:`VBoxErrorInvalidVmState` Session state prevents operation. raises :class:`VBoxErrorInvalidObjectState` Session type prevents operation. """

        if not isinstance(medium_attachment, IMediumAttachment):
            raise TypeError("medium_attachment can only be an instance of type IMediumAttachment")
        if not isinstance(remove, bool):
            raise TypeError("remove can only be an instance of type bool")
        if not isinstance(silent, bool):
            raise TypeError("silent can only be an instance of type bool")
        self._call("onStorageDeviceChange",
                     in_p=[medium_attachment, remove, silent])