List<CommittedChangeList> (final List<? extends CommittedChangeList> changeLists, final boolean setFirst) { List<CommittedChangeList> list = new ArrayList<>(changeLists); if (myInSetBase) { return list; } myInSetBase = true; boolean callSetFilterBase = setFirst; for (final ChangeListFilteringStrategy delegate : myDelegates.values()) { if (callSetFilterBase) { delegate.setFilterBase(list); } callSetFilterBase = true; list = delegate.filterChangeLists(list); } myInSetBase = false; return list; }