import java.util.Collection;
import java.util.HashSet;

/**
 * Cuenta cuántos elementos se intentó agregar, por herencia. Está mal:
 * HashSet.addAll llama a this.add por cada elemento, y ese add es el nuestro.
 */
@SuppressWarnings("serial")     // HashSet es Serializable; aquí no serializamos
public class CountingSet extends HashSet<String> {
    private int added = 0;

    @Override
    public boolean add(String s) {
        added++;
        return super.add(s);
    }

    @Override
    public boolean addAll(Collection<? extends String> c) {
        added += c.size();
        return super.addAll(c);      // ...que vuelve a llamar a add
    }

    public int added() {
        return added;
    }
}
