class DefaultEdgeTraversal extends AbstractEdgeTraversal implements EdgeTraversal {

    @Override
    public EdgeTraversal filter(Predicate<EdgeEntity> predicate) {
        requireNonNull(predicate, "predicat is required");

        Predicate<Traverser<Edge>> p = e -> predicate.test(converter.toEdgeEntity(e.get()));
        return new DefaultEdgeTraversal(supplier, flow.andThen(g -> g.filter(p)), converter);
    }

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

}