def removeListener(self, listener, iface=None):
        """Removes an event listener.

        @param listener:
                   the listener to be removed.
        """
        if (isinstance(listener, IFailedListener) and
                (iface is None or issubclass(iface, IFailedListener))):
            self.withdrawListener(FailedEvent,
                    listener, _UPLOAD_FAILED_METHOD)

        if (isinstance(listener, IFinishedListener) and
                (iface is None or issubclass(iface, IFinishedListener))):
            self.withdrawListener(FinishedEvent,
                    listener, _UPLOAD_FINISHED_METHOD)

        if (isinstance(listener, IProgressListener) and
                (iface is None or issubclass(iface, IProgressListener))):
            if listener in self._progressListeners:
                self._progressListeners.remove(listener)

        if (isinstance(listener, IStartedListener) and
                (iface is None or issubclass(iface, IStartedListener))):
            self.withdrawListener(StartedEvent,
                    listener, _UPLOAD_STARTED_METHOD)

        if (isinstance(listener, ISucceededListener) and
                (iface is None or issubclass(iface, ISucceededListener))):
            self.withdrawListener(SucceededEvent,
                    listener, _UPLOAD_SUCCEEDED_METHOD)

        super(Upload, self).removeListener(listener, iface)
dataset/ETHPy150Open rwl/muntjac/muntjac/ui/upload.py/Upload.removeListener/original