private Iterator<Feature> adjust( final Set<Feature> set, THashSet exclude, TObjectDoubleHashMap include) { // like set.removeAll(exclude) but faster exclude.forEach( new TObjectProcedure() { @Override public boolean execute(Object o) { set.remove(o); return true; // indicates it's ok to invoke this procedure again } }); if (include != null) { // like set.addAll( include ) but faster include.forEachKey( new TObjectProcedure() { @Override public boolean execute(Object key) { set.add((Feature) key); return true; // indicates it's ok to invoke this procedure again } }); } return set.iterator(); }