class CaseManagementRemoveChildCommand extends RemoveChildrenCommand {

    @Override
    @SuppressWarnings("unchecked")
    public CommandResult<RuleViolation> undo(GraphCommandExecutionContext context) {
        final Node<View<?>, Edge> parent = (Node<View<?>, Edge>) getParent(context);
        final Node<View<?>, Edge> candidate = (Node<View<?>, Edge>) getCandidate(context);

        final CaseManagementSetChildNodeGraphCommand undoCommand =
                new CaseManagementSetChildNodeGraphCommand(parent,
                                                           candidate,
                                                           OptionalInt.of(index),
                                                           Optional.empty(),
                                                           OptionalInt.empty());
        return undoCommand.execute(context);
    }

    public  CaseManagementRemoveChildCommand(@MapsTo("parentUUID") String parentUUID,
                                            @MapsTo("candidateUUID") String candidateUUID);
    public  CaseManagementRemoveChildCommand(Node<View<?>, Edge> parent,
                                            Node<View<?>, Edge> candidate);

}