'handlerOrEID : a reference to a handler object, an event ID (EID)
identifying the event type, or (eventType, EID) pair
eventType : the type of event to remove the listener(s) for'

def removeListener(self, handlerOrEID, eventType=None):

    self._eventMixin_init()
    handler = handlerOrEID
    altered = False
    if (type(handler) == tuple):
        if (eventType == None):
            eventType = handler[0]
        handlers = self._eventMixin_handlers[eventType]
        l = len(handlers)
        self._eventMixin_handlers[eventType] = [x for x in handlers if (x[3] != handler[1])]
        altered = (altered or (l != len(self._eventMixin_handlers[eventType])))
    elif (type(handler) == int):
        if (eventType == None):
            for event in self._eventMixin_handlers:
                handlers = self._eventMixin_handlers[event]
                l = len(handlers)
                self._eventMixin_handlers[event] = [x for x in handlers if (x[3] != handler)]
                altered = (altered or (l != len(self._eventMixin_handlers[event])))
        else:
            l = len(handlers)
            handlers = self._eventMixin_handlers[eventType]
            self._eventMixin_handlers[eventType] = [x for x in handlers if (x[3] != handler)]
            altered = (altered or (l != len(self._eventMixin_handlers[event])))
    elif (eventType == None):
        for event in self._eventMixin_handlers:
            handlers = self._eventMixin_handlers[event]
            l = len(handlers)
            self._eventMixin_handlers[event] = [x for x in handlers if (x[1] != handler)]
            altered = (altered or (l != len(self._eventMixin_handlers[event])))
    else:
        handlers = self._eventMixin_handlers[eventType]
        l = len(handlers)
        self._eventMixin_handlers[eventType] = [x for x in handlers if (x[1] != handler)]
        altered = (altered or (l != len(self._eventMixin_handlers[eventType])))
    return altered
