@Override
    public boolean equals(final Object o) {
        if(this == o) {
            return true;
        }
        if(!(o instanceof AttributedList)) {
            return false;
        }
        final AttributedList<?> that = (AttributedList<?>) o;
        return Objects.equals(impl, that.impl);
    }
@Test
    public void testEquals() {
        final AttributedList<Path> list1 = new AttributedList<>();
        final AttributedList<Path> list2 = new AttributedList<>();
        final Path a = new Path("/a", EnumSet.of(Path.Type.directory));
        assertTrue(list1.add(a));
        assertTrue(list2.add(a));
        assertEquals(list1, list2);
    }