public Iterator<T> filter(Iterator<T> iterator) {
        return new FilterIterator(iterator);
    }
@Test
    public void testFilter_Iterable() {
        List<String> testData = new ArrayList<>();
        testData.add("keep");
        testData.add("remove");
        testData.add("keep");

        List<String> expResults = new ArrayList<>();
        expResults.add("keep");
        expResults.add("keep");

        List<String> actResults = new ArrayList<>();
        for (String s : TEST_FILTER.filter(testData)) {
            actResults.add(s);
        }
        assertArrayEquals(expResults.toArray(), actResults.toArray());
    }