why do lookups when we only use the value. how about this 


            return from handlers in handlerList.Values
                from typeHandled in handlers
                where MessageConventionExtensions.IsMessageType(typeHandled)
                select typeHandled;