List<num> apply(List<num> x) { int len = x.length; if(!cache.containsKey(len)) cache[len] = windowType.getFactors(len).toList(growable:false); return multiplyLists(cache[len]!, x); }