@Override public void run() { try { if (filter == null || filter.allowLine(line)) { T obj = processLine(); ListIterator<BeanVerifier<T>> verifierList = verifiers.listIterator(); boolean keep = true; while(keep && verifierList.hasNext()) { keep = verifierList.next().verifyBean(obj); } if (keep) { OpencsvUtils.queueRefuseToAcceptDefeat( resultantBeanQueue, new OrderedObject<>(lineNumber, obj)); } } } catch (CsvException e) { e.setLineNumber(lineNumber); e.setLine(line); if (throwExceptions) { throw new RuntimeException(e); } OpencsvUtils.queueRefuseToAcceptDefeat(thrownExceptionsQueue, new OrderedObject<>(lineNumber, e)); } catch (Exception e) { throw new RuntimeException(e); } }