// Path: hppc/src/main/templates/com/carrotsearch/hppc/predicates/KTypePredicate.java
// public interface KTypePredicate<KType> {
//   public boolean apply(KType value);
// }


import com.carrotsearch.hppc.predicates.KTypePredicate;
package com.carrotsearch.hppc;


/**
 * A collection allows basic, efficient operations on sets of elements
 * (difference and intersection).
 */
/*! ${TemplateOptions.generatedAnnotation} !*/
public interface KTypeCollection<KType> extends KTypeContainer<KType> {
  /**
   * Removes all occurrences of <code>e</code> from this collection.
   * 
   * @param e
   *          Element to be removed from this collection, if present.
   * @return The number of removed elements as a result of this call.
   */
  public int removeAll(KType e);

  /**
   * Removes all elements in this collection that are present in <code>c</code>.
   * 
   * @return Returns the number of removed elements.
   */
  public int removeAll(KTypeLookupContainer<? super KType> c);

  /**
   * Removes all elements in this collection for which the given predicate
   * returns <code>true</code>.
   * 
   * @return Returns the number of removed elements.
   */
// Path: hppc/src/main/templates/com/carrotsearch/hppc/predicates/KTypePredicate.java
// public interface KTypePredicate<KType> {
//   public boolean apply(KType value);
// }


// Path: hppc/src/main/templates/com/carrotsearch/hppc/KTypeCollection.java
import com.carrotsearch.hppc.predicates.KTypePredicate;

package com.carrotsearch.hppc;


/**
 * A collection allows basic, efficient operations on sets of elements
 * (difference and intersection).
 */
/*! ${TemplateOptions.generatedAnnotation} !*/
public interface KTypeCollection<KType> extends KTypeContainer<KType> {
  /**
   * Removes all occurrences of <code>e</code> from this collection.
   * 
   * @param e
   *          Element to be removed from this collection, if present.
   * @return The number of removed elements as a result of this call.
   */
  public int removeAll(KType e);

  /**
   * Removes all elements in this collection that are present in <code>c</code>.
   * 
   * @return Returns the number of removed elements.
   */
  public int removeAll(KTypeLookupContainer<? super KType> c);

  /**
   * Removes all elements in this collection for which the given predicate
   * returns <code>true</code>.
   * 
   * @return Returns the number of removed elements.
   */
  public int removeAll(KTypePredicate<? super KType> predicate);