this is not great since it does a dictionary lookup in a loop. since we are going through all values lets just use the enumerator


            return
                from keyValue in handlerList
                where keyValue.Value.Any(msgTypeHandled => msgTypeHandled.IsAssignableFrom(messageType))
                select keyValue.Key;