public Dictionary<string, Type> Build()
{
var actionTypes = (from type in types
where type.IsPublic
where type != typeof (ActionController)
where typeof (ActionController).IsAssignableFrom(type)
where !type.IsAbstract
where !type.IsInterface
select type);
var located = actionTypes
.Where(x => predicates.All(func => func(x)))
.Select(x => new { Type = x, Name = namingConventions.BuildKeyFromType(x)}).ToDictionary(x => x.Name, x => x.Type);
return located;
}