public void refilter() {
    removeAllElements();
    int count = 0;
    for (int i = 0; i < myOriginalModel.getRowCount(); i++) {
      Object valueAt = myOriginalModel.getValueAt(i, 0);
      boolean include = false;
      if (valueAt != null && myClz.isAssignableFrom(valueAt.getClass())) {
        //noinspection unchecked
        final T element = (T)valueAt;
        if (passElement(element)) {
          include = true;
        }
      } else {
        include = true;
      }
      if (include) {
        List<T> elements = new ArrayList<>(myOriginalModel.getColumnCount());
        for (int col = 0; col < myOriginalModel.getColumnCount(); col++) {
          //noinspection unchecked
          elements.add((T)myOriginalModel.getValueAt(i, col));
        }
        addToFiltered(elements);
        myIndex.add(i);
        count++;
      }
    }

    if (count > 0) {
      fireTableRowsInserted(0, count - 1);
    }
  }
public void refilter()