public static StrategyFactory ForAllComponentsEW <TEdgeWeighter>(Func <State, IServices, TEdgeWeighter> edgeWeighterProvider)
     where TEdgeWeighter : IEdgeWeighter
 {
     return(new StrategyFactory(
                StrategyName.ForEWStrategy <AllComponentsEWStrategy, TEdgeWeighter>(),
                BiggestComponentEWStrategy((s, ss) => edgeWeighterProvider(s, ss))));
 }
 public static StrategyFactory Create <TStrategy>(Func <State, IServices, TStrategy> strategyProvider, string namePrefix = null)
     where TStrategy : IStrategy
 {
     return(new StrategyFactory(StrategyName.For <TStrategy>(namePrefix), (s, ss) => strategyProvider(s, ss)));
 }
 public static SetupStrategyFactory Create <TStrategy>(Func <State, IServices, TStrategy> strategyProvider)
     where TStrategy : ISetupStrategy
 {
     return(new SetupStrategyFactory(StrategyName.ForSetup <TStrategy>(), (s, ss) => strategyProvider(s, ss)));
 }