public List executeWithResults(Iterable objects, ObjectFilter filter) {
   List list = new ArrayList();
   StatefulKnowledgeSession ksession = newWorkingMemory();
   try {
     for (Object object : objects) {
       ksession.insert(object);
     }
     ksession.fireAllRules();
     for (FactHandle fh : ksession.getFactHandles(filter)) {
       list.add(((InternalFactHandle) fh).getObject());
     }
   } finally {
     dispose(ksession);
   }
   return list;
 }