class DefaultEdgeTraversal extends AbstractEdgeTraversal implements EdgeTraversal {

    @Override
    public Optional<EdgeEntity> next() {
        Optional<Edge> edgeOptional = flow.apply(supplier.get()).tryNext();
        if (edgeOptional.isPresent()) {
            Edge edge = edgeOptional.get();
            return Optional.of(converter.toEdgeEntity(edge));

        }
        return Optional.empty();
    }

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

}