digraph G {
    ucloud_api [shape=box];
    ucloud_router [shape=box];
    ucloud_nat64 [shape=box];

    {
        rank = same;
        ucloud_api;
        ucloud_router;
        ucloud_nat64;
    }

    ucloud_api -> REQUEST_IPV6_SLASH_64  [label="Requested by user" style="dotted"];
    ucloud_api -> REQUEST_IPV4_ADDRESS [label="Requested by user" style="dotted"];
    ucloud_router -> HAS_IPV6_SLASH_64   [label="Adding route" style="dotted"];
    ucloud_nat64  -> HAS_IPV4_ADDRESS  [label="Adding NAT64" style="dotted"];
    ucloud_router -> DELETE_IPV6_SLASH_64   [label="Deleting route" style="dotted"];
    ucloud_nat64  -> DELETE_IPV4_ADDRESS  [label="Removing NAT64" style="dotted"];

    ERROR;
    ERROR -> DEFAULT;

    DEFAULT -> REQUEST_IPV6_SLASH_64;

    REQUEST_IPV6_SLASH_64 -> HAS_IPV6_SLASH_64 [label="If another /64 can be routed"];
    REQUEST_IPV6_SLASH_64 -> ERROR [label="If no /64 can be routed"];

    DEFAULT -> REQUEST_IPV4_ADDRESS;
    REQUEST_IPV4_ADDRESS -> HAS_IPV4_ADDRESS;
    REQUEST_IPV4_ADDRESS -> ERROR [label="If IPv4 address can be added"];


    HAS_IPV6_SLASH_64 -> DELETE_IPV6_SLASH_64 -> DEFAULT;
    HAS_IPV4_ADDRESS  -> DELETE_IPV4_ADDRESS -> DEFAULT;

}