class ProcessConverterDelegate {

    Result<Boolean> convertEdges(BpmnNode processRoot, List<BaseElement> flowElements, Map<String, BpmnNode> nodes) {

        List<Result<BpmnEdge>> results = flowElements.stream()
                .map(e -> converterFactory.edgeConverter().convertEdge(e, nodes))
                .filter(Result::isSuccess)
                .collect(Collectors.toList());

        boolean value = results.size() > 0 ?
                results.stream()
                        .map(Result::value)
                        .filter(Objects::nonNull)
                        .map(processRoot::addEdge)
                        .allMatch(Boolean.TRUE::equals)
                : false;

        return ResultComposer.compose(value, results);
    }

      ProcessConverterDelegate(
            TypedFactoryManager typedFactoryManager,
            PropertyReaderFactory propertyReaderFactory,
            DefinitionResolver definitionResolver,
            BaseConverterFactory factory);

}