public final SubLObject mapcar( final SubLFunction functionTyped, final SubLObject[] moreLists, final boolean returnConsedResults) { if (this == SubLNil.NIL) { return SubLNil.NIL; } for (int i = 0, size = moreLists.length; i < size; i++) { if (moreLists[i] == SubLNil.NIL) { return SubLNil.NIL; } } final int mapArity = 1 + moreLists.length; if (mapArity == 1) { UnaryFunction func = UnaryFunction.makeInstance(functionTyped); return mapResult(func, returnConsedResults); } else if (mapArity == 2) { BinaryFunction func = BinaryFunction.makeInstance(functionTyped); SubLList listTyped2 = moreLists[0].toList(); return mapResult(func, listTyped2, returnConsedResults); } else { return mapResult(functionTyped, moreLists, returnConsedResults); } }