static L lambdaMapLike lazilyMap(IF1 f, L l) { ret lazyMap((O) f, l); } static L lazilyMap(fO f, fL l) { ret new RandomAccessAbstractList { final int size = l(l); new HashMap data; public int size() { ret size; } public O get(int i) { if (data.containsKey(i)) ret data.get(i); O o = callF(f, l.get(i)); data.put(i, o); ret o; } }; } static L lazilyMap(L l, IF1 f) { ret lazilyMap(f, l); }