private List <Func <List <Item>, bool> > GetParameterDemandsFromMethodInfo(MethodInfo mi) { var parameters = mi.GetParameters(); Func <ParameterInfo, int, Func <List <Item>, bool> > getDemandForParameter = (p, i) => InvokeableUtils.DemandType(i, this.GetTypeFromClrType(p.ParameterType)); var countDemand = InvokeableUtils.DemandCount(parameters.Count()); var typeDemands = parameters .Select((p, i) => getDemandForParameter(p, i)); var demands = new List <Func <List <Item>, bool> > { countDemand }; demands.AddRange(typeDemands); return(InvokeableUtils.MakeDemands(demands.ToArray())); }