def update_guest_additions(self, source, arguments, flags):
        """Automatically updates already installed Guest Additions in a VM.
        
        At the moment only Windows guests are supported.
        
        Because the VirtualBox Guest Additions drivers are not WHQL-certified
        yet there might be warning dialogs during the actual Guest Additions
        update. These need to be confirmed manually in order to continue the
        installation process. This applies to Windows 2000 and Windows XP guests
        and therefore these guests can't be updated in a fully automated fashion
        without user interaction. However, to start a Guest Additions update for
        the mentioned Windows versions anyway, the flag
        AdditionsUpdateFlag_WaitForUpdateStartOnly can be specified. See
        :py:class:`AdditionsUpdateFlag`  for more information.

        in source of type str
            Path to the Guest Additions .ISO file to use for the update.

        in arguments of type str
            Optional command line arguments to use for the Guest Additions
            installer. Useful for retrofitting features which weren't installed
            before in the guest.

        in flags of type :class:`AdditionsUpdateFlag`
            :py:class:`AdditionsUpdateFlag`  flags.

        return progress of type :class:`IProgress`
            Progress object to track the operation completion.

        raises :class:`VBoxErrorNotSupported`
            Guest OS is not supported for automated Guest Additions updates or the
already installed Guest Additions are not ready yet.
        
        raises :class:`VBoxErrorIprtError`
            Error while updating.
        
        """
        if not isinstance(source, basestring):
            raise TypeError("source can only be an instance of type basestring")
        if not isinstance(arguments, list):
            raise TypeError("arguments can only be an instance of type list")
        for a in arguments[:10]:
            if not isinstance(a, basestring):
                raise TypeError(
                        "array can only contain objects of type basestring")
        if not isinstance(flags, list):
            raise TypeError("flags can only be an instance of type list")
        for a in flags[:10]:
            if not isinstance(a, AdditionsUpdateFlag):
                raise TypeError(
                        "array can only contain objects of type AdditionsUpdateFlag")
        progress = self._call("updateGuestAdditions",
                     in_p=[source, arguments, flags])
        progress = IProgress(progress)
        return progress