private final SubLList mapResult(UnaryFunction function, boolean returnConsedResults) {
   SubLList result = SubLNil.NIL;
   for (SubLObject cur = this; cur != SubLNil.NIL; cur = cur.rest()) {
     final SubLObject curResult = function.processItem(cur.first());
     if (returnConsedResults) {
       result = SubLObjectFactory.makeCons(curResult, result);
     }
   }
   if (returnConsedResults) {
     return result.asConsList().reverse(true).toList();
   }
   return result;
 }
 public SubLList assoc(SubLObject item, BinaryFunction test, UnaryFunction key) {
   SubLObject currentItem = null;
   SubLList result = SubLNil.NIL;
   SubLListListIterator iter = null;
   Resourcer resourcer = Resourcer.getInstance();
   SubLList curAssoc;
   try {
     iter = resourcer.acquireSubLListListIterator(this);
     while (iter.hasNext()) {
       curAssoc = iter.nextSubLObject().toList();
       if (SubLNil.NIL != test.processItem(item, key.processItem(curAssoc.first()))) {
         result = curAssoc;
         break;
       }
     }
   } finally {
     resourcer.releaseSubLListListIterator(iter);
   }
   return result;
 }