/** * Generator output can create opportunities for further generator execution, so runGenerators() * is repeated to a fixed point. But previously handled generator/reboundType pairs should be * ignored. */ private void removePreviouslyReboundCombinations( final String generatorName, Set<String> newReboundTypeNames) { newReboundTypeNames.removeAll( Sets.newHashSet( Sets.filter( newReboundTypeNames, new Predicate<String>() { @Override public boolean apply(@Nullable String newReboundTypeName) { return generatorNamesByPreviouslyReboundTypeName.containsEntry( newReboundTypeName, generatorName); } }))); }