class DefaultVertexTraversal extends AbstractVertexTraversal implements VertexTraversal {

    @Override
    public <T> VertexTraversal filter(Predicate<T> predicate) {
        requireNonNull(predicate, "predicate is required");

        Predicate<Traverser<Vertex>> p = v -> predicate.test(converter.toEntity(v.get()));
        return new DefaultVertexTraversal(supplier, flow.andThen(g -> g.filter(p)), converter);
    }

      DefaultVertexTraversal(Supplier<GraphTraversal<?, ?>> supplier,
                           Function<GraphTraversal<?, ?>, GraphTraversal<Vertex, Vertex>> flow,
                           GraphConverter converter);

}