class ImplicitLinkedHashMultiSet extends ImplicitLinkedHashSet<E> {

    final public List<E> findAll(E key) {
        if (key == null) {
            return Collections.<E>emptyList();
        }
        ArrayList<E> results = new ArrayList<>();
        int slot = slot(elements, key);
        for (int seen = 0; seen < elements.length; seen++) {
            Element element = elements[slot];
            if (element == null) {
                break;
            }
            if (key.equals(element)) {
                @SuppressWarnings("unchecked")
                E result = (E) elements[slot];
                results.add(result);
            }
            slot = (slot + 1) % elements.length;
        }
        return results;
    }

    public  ImplicitLinkedHashMultiSet();
    public  ImplicitLinkedHashMultiSet(int expectedNumElements);
    public  ImplicitLinkedHashMultiSet(Iterator<E> iter);

}