class CaseManagementCommandUtil {

    @SuppressWarnings("unchecked")
    public static int getNewChildGraphIndex(final Node<View<?>, Edge> parent) {
        if (Objects.isNull(parent.getContent()) ||
                !(parent.getContent().getDefinition() instanceof CaseManagementDiagram)) {
            return parent.getOutEdges().size();
        }

        List<Node<View<?>, Edge>> childNodes = parent.getOutEdges().stream()
                .map(edge -> (Node<View<?>, Edge>) edge.getTargetNode())
                .collect(Collectors.toList());

        for (int n = childNodes.size(), i = n - 1; i >= 0; i--) {
            Node<View<?>, Edge> node = childNodes.get(i);
            if (isStageNode(node)
                    || node.getContent().getDefinition() instanceof StartNoneEvent) {
                return i + 1;
            }
        }

        return 0;
    }

}