private static <F,N> void eachLine(final List<F> steps, final P2<F,P1<N>> digF, final List<N> collecteds, final P1<List<N>> resultF) {
		if (Cols.isEmpty(steps)) {
			resultF.e(collecteds);
			return;
		}

		F feed = steps.get(0);
		digF.e(feed, new P1<N>() {public void e(N n) {
			LinkedList<N> newCollecteds = new LinkedList<N>(collecteds);
			newCollecteds.add(n);
			
			eachLine(steps.subList(1, steps.size()), digF, newCollecteds, resultF);
		}});
	}