if (filterType == null) {
throw new NullPointerException("filterType");
}
for (ListIterator<Entry> i = entries.listIterator(); i.hasNext();) {
Entry e = i.next();
if (filterType.isAssignableFrom(e.getFilter().getClass())) {
entries.remove(i.previousIndex());
return e.getFilter();
}
}
throw new IllegalArgumentException("Filter not found: " + filterType.getName());
}