@Override
	public <S extends Subscriber<T>, T> boolean unsubscribeByTypes(
			ConcurrentMap<Class<?>, List<SubscriberParent>> mapping,
			S subscriberType, Class<T> messageType) {
		boolean ret = false;
		List<SubscriberParent> list = mapping.get(messageType);
		if (list != null) {
			for (SubscriberParent p : list) {
				Subscriber<?> s = p.getSubscriber();
				if (s != null
						&& subscriberType.getClass().isAssignableFrom(
								s.getClass())) {
					list.remove(p);
					ret = true;
				}
			}
		}
		return ret;
	}