module openflowplugin-extension-nicira-action {
    yang-version 1;

    namespace "urn:opendaylight:openflowplugin:extension:nicira:action";
    prefix "openflowplugin-nicira-action";

    import yang-ext {prefix ext; revision-date "2013-07-09";}
    import flow-node-inventory {prefix fni; revision-date 2013-08-19; }
    import opendaylight-inventory {prefix inv;revision-date "2013-08-19";}
    import sal-flow {prefix sal-flow;revision-date "2013-08-19";}
    import sal-group {prefix sal-group;revision-date "2013-09-18";}
    import packet-processing {prefix sal-packet;revision-date "2013-07-09";}
    import opendaylight-flow-statistics {prefix odl-flow-stats;revision-date "2013-08-19";}
    import opendaylight-group-statistics {prefix odl-group-stats;revision-date "2013-11-11";}
    import nicira-match {prefix nicira-match;revision-date "2014-04-21";}
    import openflowplugin-extension-general {prefix ext-gen;revision-date "2014-07-14";}
    import openflow-action {prefix ofaction;revision-date "2015-02-03";}
    import nicira-action {prefix nicira-action;revision-date "2014-04-21";}
    import opendaylight-direct-statistics {prefix directstat;revision-date "2016-05-11";}
    import ietf-inet-types { prefix "inet"; revision-date "2013-07-15"; }
    import opendaylight-match-types {prefix match; revision-date "2013-10-26";}

    description
        "Nicira openflow action extensions.";

    revision "2014-07-14" {
        description "Initial revision";
    }

    identity nx-action-reg-load-key {
        base ext-gen:extension-key;
    }
    identity nx-action-reg-move-key {
        base ext-gen:extension-key;
    }

    grouping nxm-nx-reg-grouping {
        leaf nx-reg {
            type identityref {
                base nicira-match:nxm-nx-reg;
            }
        }
    }
    grouping nxm-nx-tun-id-grouping {
        leaf nx-tun-id {
            type empty;
        }
    }
    grouping nxm-nx-arp-sha-grouping {
        leaf nx-arp-sha {
            type empty;
        }
    }
    grouping nxm-nx-arp-tha-grouping {
        leaf nx-arp-tha {
            type empty;
        }
    }
    grouping oxm-of-mpls-label-grouping {
        leaf of-mpls-label {
            type empty;
        }
    }
    grouping oxm-of-metadata-grouping {
        leaf of-metadata {
            type empty;
        }
    }
    grouping nxm-of-arp-op-grouping {
        leaf of-arp-op {
            type empty;
        }
    }
    grouping nxm-of-arp-spa-grouping {
        leaf of-arp-spa {
            type empty;
        }
    }
    grouping nxm-of-arp-tpa-grouping {
        leaf of-arp-tpa {
            type empty;
        }
    }
    grouping nxm-of-in-port-grouping {
        leaf of-in-port {
            type empty;
        }
    }
    grouping nxm-nx-tun-ipv4-dst-grouping {
        leaf nx-tun-ipv4-dst {
            type empty;
        }
    }
    grouping nxm-nx-tun-ipv4-src-grouping {
        leaf nx-tun-ipv4-src {
            type empty;
        }
    }
    grouping nxm-of-eth-src-grouping {
        leaf of-eth-src {
            type empty;
        }
    }
    grouping nxm-of-eth-dst-grouping {
        leaf of-eth-dst {
            type empty;
        }
    }
    grouping nxm-of-eth-type-grouping {
        leaf of-eth-type {
            type empty;
        }
    }
    grouping nxm-nx-nsp-grouping {
        leaf nx-nsp-dst {
            type empty;
        }
    }
    grouping nxm-nx-nsi-grouping {
        leaf nx-nsi-dst {
            type empty;
        }
    }
    grouping nxm-nx-nshc-1-grouping {
        leaf nx-nshc-1-dst {
            type empty;
        }
    }
    grouping nxm-nx-nshc-2-grouping {
        leaf nx-nshc-2-dst {
            type empty;
        }
    }
    grouping nxm-nx-nshc-3-grouping {
        leaf nx-nshc-3-dst {
            type empty;
        }
    }
    grouping nxm-nx-nshc-4-grouping {
        leaf nx-nshc-4-dst {
            type empty;
        }
    }
    grouping nxm-of-ip-src-grouping {
        leaf of-ip-src {
            type empty;
        }
    }
    grouping nxm-of-ip-dst-grouping {
        leaf of-ip-dst {
            type empty;
        }
    }
    grouping nxm-nx-ipv6-src-grouping {
        leaf nx-ipv6-src {
            type empty;
        }
    }
    grouping nxm-nx-ipv6-dst-grouping {
        leaf nx-ipv6-dst {
            type empty;
        }
    }
    grouping nxm-of-icmp-type-grouping {
        leaf of-icmp-type {
            type empty;
        }
    }
    grouping nxm-nx-nsh-flags-grouping {
        leaf nx-nsh-flags {
            type empty;
        }
    }
    grouping nxm-nx-nsh-mdtype-grouping {
        leaf nx-nsh-mdtype {
            type empty;
        }
    }
    grouping nxm-nx-nsh-np-grouping {
        leaf nx-nsh-np {
            type empty;
        }
    }
    grouping nxm-nx-nsh-ttl-grouping {
        leaf nx-nsh-ttl {
            type empty;
        }
    }

    grouping dst-choice-grouping {
        choice dst-choice {
            case dst-nx-reg-case {
                uses nxm-nx-reg-grouping;
            }
            case dst-nx-tun-id-case {
                uses nxm-nx-tun-id-grouping;
            }
            case dst-of-mpls-label-case {
                 uses oxm-of-mpls-label-grouping;
            }
            case dst-of-metadata-case {
                uses oxm-of-metadata-grouping;
            }
            case dst-nx-arp-sha-case {
                uses nxm-nx-arp-sha-grouping;
            }
            case dst-nx-arp-tha-case {
                uses nxm-nx-arp-tha-grouping;
            }
            case dst-of-arp-op-case {
                uses nxm-of-arp-op-grouping;
            }
            case dst-of-arp-spa-case {
                uses nxm-of-arp-spa-grouping;
            }
            case dst-of-arp-tpa-case {
                uses nxm-of-arp-tpa-grouping;
            }
            case dst-nx-of-in-port-case {
                uses nxm-of-in-port-grouping;
            }
            case dst-nx-tun-ipv4-dst-case {
                uses nxm-nx-tun-ipv4-dst-grouping;
            }
            case dst-nx-tun-ipv4-src-case {
                uses nxm-nx-tun-ipv4-src-grouping;
            }
            case dst-of-eth-src-case {
                uses nxm-of-eth-src-grouping;
            }
            case dst-of-eth-dst-case {
                uses nxm-of-eth-dst-grouping;
            }
            case dst-nx-nsp-case {
                uses nxm-nx-nsp-grouping;
            }
            case dst-nx-nsi-case {
                uses nxm-nx-nsi-grouping;
            }
            case dst-nx-nshc-1-case {
                uses nxm-nx-nshc-1-grouping;
            }
            case dst-nx-nshc-2-case {
                uses nxm-nx-nshc-2-grouping;
            }
            case dst-nx-nshc-3-case {
                uses nxm-nx-nshc-3-grouping;
            }
            case dst-nx-nshc-4-case {
                uses nxm-nx-nshc-4-grouping;
            }
            case dst-of-ip-src-case {
                uses nxm-of-ip-src-grouping;
            }
            case dst-of-ip-dst-case {
                uses nxm-of-ip-dst-grouping;
            }
            case dst-nx-ipv6-src-case {
                uses nxm-nx-ipv6-src-grouping;
            }
            case dst-nx-ipv6-dst-case {
                uses nxm-nx-ipv6-dst-grouping;
            }
            case dst-of-icmp-type-case {
                uses nxm-of-icmp-type-grouping;
            }
            case dst-nx-nsh-flags-case {
                uses nxm-nx-nsh-flags-grouping;
            }
            case dst-nx-nsh-ttl-case {
                uses nxm-nx-nsh-ttl-grouping;
            }
        }
    }

    grouping src-choice-grouping {
        choice src-choice {
            case src-nx-reg-case {
                uses nxm-nx-reg-grouping;
            }
            case src-nx-tun-id-case {
                uses nxm-nx-tun-id-grouping;
            }
            case src-nx-of-mpls-label-case {
                uses oxm-of-mpls-label-grouping;
            }
            case src-nx-of-metadata-case {
                uses oxm-of-metadata-grouping;
            }
            case src-nx-arp-sha-case {
                uses nxm-nx-arp-sha-grouping;
            }
            case src-nx-arp-tha-case {
                uses nxm-nx-arp-tha-grouping;
            }
            case src-of-arp-op-case {
                uses nxm-of-arp-op-grouping;
            }
            case src-of-arp-spa-case {
                uses nxm-of-arp-spa-grouping;
            }
            case src-of-arp-tpa-case {
                uses nxm-of-arp-tpa-grouping;
            }
            case src-nx-of-in-port-case {
                uses nxm-of-in-port-grouping;
            }
            case src-nx-tun-ipv4-dst-case {
                uses nxm-nx-tun-ipv4-dst-grouping;
            }
            case src-nx-tun-ipv4-src-case {
                uses nxm-nx-tun-ipv4-src-grouping;
            }
            case src-of-eth-src-case {
                uses nxm-of-eth-src-grouping;
            }
            case src-of-eth-dst-case {
                uses nxm-of-eth-dst-grouping;
            }
            case src-of-eth-type-case {
                uses nxm-of-eth-type-grouping;
            }
            case src-nx-nsp-case {
                uses nxm-nx-nsp-grouping;
            }
            case src-nx-nsi-case {
                uses nxm-nx-nsi-grouping;
            }
            case src-nx-nshc-1-case {
                uses nxm-nx-nshc-1-grouping;
            }
            case src-nx-nshc-2-case {
                uses nxm-nx-nshc-2-grouping;
            }
            case src-nx-nshc-3-case {
                uses nxm-nx-nshc-3-grouping;
            }
            case src-nx-nshc-4-case {
                uses nxm-nx-nshc-4-grouping;
            }
            case src-of-ip-src-case {
                uses nxm-of-ip-src-grouping;
            }
            case src-of-ip-dst-case {
                uses nxm-of-ip-dst-grouping;
            }
            case src-nx-ipv6-src-case {
                uses nxm-nx-ipv6-src-grouping;
            }
            case src-nx-ipv6-dst-case {
                uses nxm-nx-ipv6-dst-grouping;
            }
            case src-nx-nsh-flags-case {
                uses nxm-nx-nsh-flags-grouping;
            }
            case src-nx-nsh-mdtype-case {
                uses nxm-nx-nsh-mdtype-grouping;
            }
            case src-nx-nsh-np-case {
                uses nxm-nx-nsh-np-grouping;
            }
            case src-nx-nsh-ttl-case {
                uses nxm-nx-nsh-ttl-grouping;
            }
        }
    }

    grouping range-grouping {
        leaf start {
            description "Include value.";
            type uint16;
        }
        leaf end {
            description "Include value.";
            type uint16;
        }
    }

    grouping nx-action-reg-load-grouping {
        container nx-reg-load {
            container dst {
                description "Writes value to bits start through end, inclusive, in field dst.";
                uses dst-choice-grouping;
                uses range-grouping;
            }
            leaf value {
                type uint64;
            }
        }
    }

    grouping nx-action-reg-move-grouping {
        container nx-reg-move {
            container src {
                description "Writes value to bits start through end, inclusive, in field src.";
                uses src-choice-grouping;
                uses range-grouping;
            }
            container dst {
                description "Writes value to bits start through end, inclusive, in field dst.";
                uses dst-choice-grouping;
                uses range-grouping;
            }
        }
    }
    grouping nx-action-output-reg-grouping {
        container nx-output-reg {
            container src {
                description "Choose the register with the OpenFlow output port, using the number of
bits specified from the register.";
                uses src-choice-grouping;
                leaf ofs_nbits {
                    type uint16;
                }
            }
            leaf max_len {
                description "The number of bytes to send when the chosen port is OFPP_CONTROLLER";
                type uint16;
            }
        }
    }

    grouping nx-action-resubmit-grouping {
        container nx-resubmit {
            description "Re-searches OpenFlow flow table (or the table whose number is specified by table)
            with the in-port field replaced  by port (if port is specified) and executes the actions found";
            leaf in-port {
                type uint16;
                default 0xfff8; // OFPP_INPORT
            }
            leaf table {
                type uint8 {
                    range "0 .. 255";
                }
                default 255; // Current Table
            }
        }
    }

    grouping nx-action-fin-timeout-grouping {
        container nx-action-fin-timeout {
            leaf fin-idle-timeout {
                type uint16;
            }
            leaf fin-hard-timeout  {
                type uint16;
            }
        }
    }

    grouping nx-action-multipath-grouping {
        container nx-multipath {
            leaf fields {
                type nicira-action:ofj-nx-hash-fields;
            }
            leaf basis {
                type uint16;
                default 0x400;
            }
            leaf algorithm {
                type nicira-action:ofj-nx-mp-algorithm;
            }
            leaf max-link {
                type uint16;
            }
            leaf arg {
                type uint32;
            }
            container dst {
                description "Writes value to bits start through end, inclusive, in field dst.";
                uses dst-choice-grouping;
                uses range-grouping;
            }
        }
    }

    grouping nx-action-conntrack-grouping {
        container nx-conntrack {
            leaf flags {
                type uint16;
            }
            leaf zone-src {
                type uint32;
            }
            leaf conntrack-zone {
                type uint16;
            }
            leaf recirc-table {
                type uint8;
            }
            list ct-actions{
                uses ofpact-actions;
            }
        }
    }

    grouping nx-action-ct-clear-grouping {
        container nx-ct-clear {
            presence "no content action";
            description "Clear Ct states from the flow";
        }
    }

    grouping ofpact-actions {
        description
           "Actions to be performed with conntrack.";
        choice ofpact-actions {
            case nx-action-nat-case {
                container nx-action-nat {
                    leaf flags {
                        type uint16;
                    }
                    leaf range_present {
                        type uint16;
                    }
                    leaf ip-address-min {
                        type inet:ip-address;
                    }
                    leaf ip-address-max {
                        type inet:ip-address;
                    }
                    leaf port-min {
                        type uint16;
                    }
                    leaf port-max {
                        type uint16;
                    }
                }
            }
            case nx-action-ct-mark-case {
                container nx-action-ct-mark {
                    leaf ct-mark {
                        type uint32;
                    }
                    // TODO: ct_mark mask is not supported yet
                }
            }
        }
    }

    grouping flow-mod-spec {
        description
           "flow mod spec indicates the actions that should be performed to create a new flow which was learned from learn action.";
        choice flow-mod-spec{
            case flow-mod-add-match-from-field-case{
                container flow-mod-add-match-from-field{
                        leaf flow-mod-num-bits{
                        type uint16;
                    }

                    leaf src-field{
                        type uint32;
                    }

                    leaf src-ofs{
                        type uint16;
                    }

                    leaf dst-field{
                        type uint32;
                    }

                    leaf dst-ofs{
                        type uint16;
                    }
                }
            }
            case flow-mod-add-match-from-value-case{
                container flow-mod-add-match-from-value{
                        leaf flow-mod-num-bits{
                        type uint16;
                    }

                    leaf value{
                        type uint16;
                    }

                    leaf src-field{
                        type uint32;
                    }

                    leaf src-ofs{
                        type uint16;
                    }
                }
            }
            case flow-mod-copy-field-into-field-case{
                container flow-mod-copy-field-into-field{
                        leaf flow-mod-num-bits{
                        type uint16;
                    }

                    leaf src-field{
                        type uint32;
                    }

                    leaf src-ofs{
                        type uint16;
                    }

                    leaf dst-field{
                        type uint32;
                    }

                    leaf dst-ofs{
                        type uint16;
                    }
                }
            }
            case flow-mod-copy-value-into-field-case{
                container flow-mod-copy-value-into-field{
                        leaf flow-mod-num-bits{
                        type uint16;
                    }

                    leaf value{
                        type uint16;
                    }

                    leaf dst-field{
                        type uint32;
                    }

                    leaf dst-ofs{
                        type uint16;
                    }
                }
            }
            case flow-mod-output-to-port-case{
                container flow-mod-output-to-port{
                        leaf flow-mod-num-bits{
                        type uint16;
                    }

                    leaf src-field{
                        type uint32;
                    }

                    leaf src-ofs{
                        type uint16;
                    }
                }
            }
        }
    }

    grouping nx-action-learn-grouping {
        container nx-learn {
            leaf idle-timeout {
                type uint16;
            }
            leaf hard-timeout {
                type uint16;
            }
            leaf priority {
                type uint16;
            }
            leaf cookie {
                type uint64;
            }
            leaf flags {
                type uint16;
            }
            leaf table-id {
                type uint8;
            }
            leaf fin-idle-timeout {
                type uint16;
            }
            leaf fin-hard-timeout {
                type uint16;
            }

            list flow-mods{
                uses flow-mod-spec;
            }
        }
    }

    grouping nx-action-encap-grouping {
        container nx-encap {
            uses match:packet-type-fields {
                refine packet-type {
                    mandatory true;
                }
            }
        }
    }

    grouping nx-action-decap-grouping {
        container nx-decap {
            uses match:packet-type-fields {
                refine packet-type {
                    default "0xFFFE"; // USE NEXT PROTO
                }
            }
        }
    }

    grouping nx-action-dec-nsh-ttl-grouping {
        container nx-dec-nsh-ttl {
            presence "no content action";
            description "Decrease NSH TTL";
        }
    }


    // ACTION augmentations
    // RPCS
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-reg-load-rpc-add-flow-write-actions-case {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-reg-move-rpc-add-flow-write-actions-case {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-output-reg-rpc-add-flow-write-actions-case {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-resubmit-rpc-add-flow-write-actions-case {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-fin-timeout-rpc-add-flow-write-actions-case {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-multipath-rpc-add-flow-write-actions-case {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-conntrack-rpc-add-flow-write-actions-case {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-ct-clear-rpc-add-flow-write-actions-case {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-learn-rpc-add-flow-write-actions-case {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-encap-rpc-add-flow-write-actions-case {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-decap-rpc-add-flow-write-actions-case {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-dec-nsh-ttl-rpc-add-flow-write-actions-case {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-reg-load-rpc-add-flow-apply-actions-case {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-reg-move-rpc-add-flow-apply-actions-case {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-output-reg-rpc-add-flow-apply-actions-case {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-resubmit-rpc-add-flow-apply-actions-case {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-fin-timeout-rpc-add-flow-apply-actions-case {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-multipath-rpc-add-flow-apply-actions-case {
            uses nx-action-multipath-grouping;
        }
    }

    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-conntrack-rpc-add-flow-apply-actions-case {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-ct-clear-rpc-add-flow-apply-actions-case {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-learn-rpc-add-flow-apply-actions-case {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-encap-rpc-add-flow-apply-actions-case {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-decap-rpc-add-flow-apply-actions-case {
          uses nx-action-decap-grouping;
        }
    }
    augment "/sal-flow:add-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-dec-nsh-ttl-rpc-add-flow-apply-actions-case {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-load-rpc-remove-flow-write-actions-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-move-rpc-remove-flow-write-actions-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-output-reg-rpc-remove-flow-write-actions-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-resubmit-rpc-remove-flow-write-actions-case {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-fin-timeout-rpc-remove-flow-write-actions-case {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-multipath-rpc-remove-flow-write-actions-case {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-conntrack-rpc-remove-flow-write-actions-case {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-ct-clear-rpc-remove-flow-write-actions-case {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-learn-rpc-remove-flow-write-actions-case {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-encap-rpc-remove-flow-write-actions-case {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-decap-rpc-remove-flow-write-actions-case {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case nx-action-dec-nsh-ttl-rpc-remove-flow-write-actions-case {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-load-rpc-remove-flow-apply-actions-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-move-rpc-remove-flow-apply-actions-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-output-reg-rpc-remove-flow-apply-actions-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-resubmit-rpc-remove-flow-apply-actions-case {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-fin-timeout-rpc-remove-flow-apply-actions-case {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-multipath-rpc-remove-flow-apply-actions-case {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-conntrack-rpc-remove-flow-apply-actions-case {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-ct-clear-rpc-remove-flow-apply-actions-case {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-learn-rpc-remove-flow-apply-actions-case {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-encap-rpc-remove-flow-apply-actions-case {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-decap-rpc-remove-flow-apply-actions-case {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-flow:remove-flow/sal-flow:input/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case nx-action-dec-nsh-ttl-rpc-remove-flow-apply-actions-case {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-load-rpc-update-flow-original-write-actions-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-move-rpc-update-flow-original-write-actions-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-output-reg-rpc-update-flow-original-write-actions-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-resubmit-rpc-update-flow-original-write-actions-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-fin-timeout-rpc-update-flow-original-write-actions-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-multipath-rpc-update-flow-original-write-actions-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-conntrack-rpc-update-flow-original-write-actions-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-ct-clear-rpc-update-flow-original-write-actions-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-learn-rpc-update-flow-original-write-actions-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-encap-rpc-update-flow-original-write-actions-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-decap-rpc-update-flow-original-write-actions-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-dec-nsh-ttl-rpc-update-flow-original-write-actions-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-load-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-move-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-output-reg-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-resubmit-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-fin-timeout-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-multipath-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-conntrack-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-ct-clear-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-learn-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-encap-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-decap-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:original-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-dec-nsh-ttl-rpc-update-flow-original-apply-actions-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-load-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-move-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-output-reg-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-resubmit-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-fin-timeout-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-multipath-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-conntrack-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-ct-clear-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-learn-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-encap-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-decap-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:write-actions-case/sal-flow:write-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-dec-nsh-ttl-rpc-update-flow-updated-write-actions-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-load-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-reg-move-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-output-reg-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-resubmit-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-fin-timeout-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-multipath-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-conntrack-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-ct-clear-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-learn-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-encap-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-decap-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-flow:update-flow/sal-flow:input/sal-flow:updated-flow/sal-flow:instructions/sal-flow:instruction/sal-flow:instruction/sal-flow:apply-actions-case/sal-flow:apply-actions/sal-flow:action/sal-flow:action" {
        case "nx-action-dec-nsh-ttl-rpc-update-flow-updated-apply-actions-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-reg-load-rpc-add-group-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-reg-move-rpc-add-group-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-output-reg-rpc-add-group-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-resubmit-rpc-add-group-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-fin-timeout-rpc-add-group-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-multipath-rpc-add-group-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-conntrack-rpc-add-group-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-ct-clear-rpc-add-group-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-learn-rpc-add-group-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-encap-rpc-add-group-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-decap-rpc-add-group-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-group:add-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-dec-nsh-ttl-rpc-add-group-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-reg-load-rpc-remove-group-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-reg-move-rpc-remove-group-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-output-reg-rpc-remove-group-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-resubmit-rpc-remove-group-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-fin-timeout-rpc-remove-group-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-multipath-rpc-remove-group-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-conntrack-rpc-remove-group-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-ct-clear-rpc-remove-group-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-learn-rpc-remove-group-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-encap-rpc-remove-group-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-decap-rpc-remove-group-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-group:remove-group/sal-group:input/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-dec-nsh-ttl-rpc-remove-group-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-reg-load-rpc-update-group-original-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-reg-move-rpc-update-group-original-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-output-reg-rpc-update-group-original-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-resubmit-rpc-update-group-original-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-fin-timeout-rpc-update-group-original-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-multipath-rpc-update-group-original-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-conntrack-rpc-update-group-original-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-ct-clear-rpc-update-group-original-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-learn-rpc-update-group-original-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-encap-rpc-update-group-original-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-decap-rpc-update-group-original-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:original-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-dec-nsh-ttl-rpc-update-group-original-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-reg-load-rpc-update-group-updated-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-reg-move-rpc-update-group-updated-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-output-reg-rpc-update-group-updated-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-resubmit-rpc-update-group-updated-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-fin-timeout-rpc-update-group-updated-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-multipath-rpc-update-group-updated-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-conntrack-rpc-update-group-updated-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-ct-clear-rpc-update-group-updated-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-learn-rpc-update-group-updated-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-encap-rpc-update-group-updated-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-decap-rpc-update-group-updated-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-group:update-group/sal-group:input/sal-group:updated-group/sal-group:buckets/sal-group:bucket/sal-group:action/sal-group:action" {
        case "nx-action-dec-nsh-ttl-rpc-update-group-updated-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-reg-load-rpc-transmit-packet-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-reg-move-rpc-transmit-packet-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-output-reg-rpc-transmit-packet-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-resubmit-rpc-transmit-packet-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-fin-timeout-rpc-transmit-packet-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-multipath-rpc-transmit-packet-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-conntrack-rpc-transmit-packet-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-ct-clear-rpc-transmit-packet-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-learn-rpc-transmit-packet-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-encap-rpc-transmit-packet-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-decap-rpc-transmit-packet-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/sal-packet:transmit-packet/sal-packet:input/sal-packet:action/sal-packet:action" {
        case "nx-action-dec-nsh-ttl-rpc-transmit-packet-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    // DATA
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-reg-load-nodes-node-table-flow-write-actions-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-reg-move-nodes-node-table-flow-write-actions-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-output-reg-nodes-node-table-flow-write-actions-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-resubmit-nodes-node-table-flow-write-actions-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-fin-timeout-nodes-node-table-flow-write-actions-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-multipath-nodes-node-table-flow-write-actions-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-conntrack-nodes-node-table-flow-write-actions-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-ct-clear-nodes-node-table-flow-write-actions-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-learn-nodes-node-table-flow-write-actions-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-encap-nodes-node-table-flow-write-actions-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-decap-nodes-node-table-flow-write-actions-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:write-actions-case/fni:write-actions/fni:action/fni:action" {
        case "nx-action-dec-nsh-ttl-nodes-node-table-flow-write-actions-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-reg-load-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-reg-move-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-output-reg-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-resubmit-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-fin-timeout-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-multipath-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-conntrack-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-ct-clear-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-learn-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-encap-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-decap-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:table/fni:flow/fni:instructions/fni:instruction/fni:instruction/fni:apply-actions-case/fni:apply-actions/fni:action/fni:action" {
        case "nx-action-dec-nsh-ttl-nodes-node-table-flow-apply-actions-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-reg-load-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-reg-move-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-output-reg-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-resubmit-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-fin-timeout-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-multipath-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-conntrack-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-ct-clear-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-learn-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-encap-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-decap-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/inv:nodes/inv:node/fni:group/fni:buckets/fni:bucket/fni:action/fni:action" {
        case "nx-action-dec-nsh-ttl-nodes-node-group-buckets-bucket-actions-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    // NOTIFICATIONS
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-reg-load-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-reg-move-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-output-reg-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-resubmit-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-fin-timeout-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-multipath-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-conntrack-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-ct-clear-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-learn-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-encap-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-decap-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:write-actions-case/odl-flow-stats:write-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-dec-nsh-ttl-notif-flows-statistics-update-write-actions-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-reg-load-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-reg-move-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-output-reg-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-resubmit-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-fin-timeout-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-multipath-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-conntrack-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-ct-clear-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-learn-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-encap-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-decap-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/odl-flow-stats:flows-statistics-update/odl-flow-stats:flow-and-statistics-map-list/odl-flow-stats:instructions/odl-flow-stats:instruction/odl-flow-stats:instruction/odl-flow-stats:apply-actions-case/odl-flow-stats:apply-actions/odl-flow-stats:action/odl-flow-stats:action" {
        case "nx-action-dec-nsh-ttl-notif-flows-statistics-update-apply-actions-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-reg-load-notif-group-desc-stats-updated-case" {
            uses nx-action-reg-load-grouping;
        }
    }
    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-reg-move-notif-group-desc-stats-updated-case" {
            uses nx-action-reg-move-grouping;
        }
    }
    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-output-reg-notif-group-desc-stats-updated-case" {
            uses nx-action-output-reg-grouping;
        }
    }
    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-resubmit-notif-group-desc-stats-updated-case" {
            uses nx-action-resubmit-grouping;
        }
    }
    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-fin-timeout-notif-group-desc-stats-updated-case" {
            uses nx-action-fin-timeout-grouping;
        }
    }
    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-multipath-notif-group-desc-stats-updated-case" {
            uses nx-action-multipath-grouping;
        }
    }
    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-conntrack-notif-group-desc-stats-updated-case" {
            uses nx-action-conntrack-grouping;
        }
    }
    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-ct-clear-notif-group-desc-stats-updated-case" {
            uses nx-action-ct-clear-grouping;
        }
    }
    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-learn-notif-group-desc-stats-updated-case" {
            uses nx-action-learn-grouping;
        }
    }
    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-encap-notif-group-desc-stats-updated-case" {
            uses nx-action-encap-grouping;
        }
    }
    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-decap-notif-group-desc-stats-updated-case" {
            uses nx-action-decap-grouping;
        }
    }
    augment "/odl-group-stats:group-desc-stats-updated/odl-group-stats:group-desc-stats/odl-group-stats:buckets/odl-group-stats:bucket/odl-group-stats:action/odl-group-stats:action" {
        case "nx-action-dec-nsh-ttl-notif-group-desc-stats-updated-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }
    augment "/directstat:get-flow-statistics/directstat:output/directstat:flow-and-statistics-map-list/directstat:instructions/directstat:instruction/directstat:instruction/directstat:apply-actions-case/directstat:apply-actions/directstat:action/directstat:action" {
        case "nx-action-reg-load-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-reg-load-grouping;
        }
        case "nx-action-reg-move-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-reg-move-grouping;
        }
        case "nx-action-output-reg-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-output-reg-grouping;
        }
        case "nx-action-resubmit-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-resubmit-grouping;
        }
        case "nx-action-fin-timeout-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-fin-timeout-grouping;
        }
        case "nx-action-multipath-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-multipath-grouping;
        }
        case "nx-action-conntrack-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-conntrack-grouping;
        }
        case "nx-action-ct-clear-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-ct-clear-grouping;
        }
        case "nx-action-learn-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-learn-grouping;
        }
        case "nx-action-encap-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-encap-grouping;
        }
        case "nx-action-decap-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-decap-grouping;
        }
        case "nx-action-dec-nsh-ttl-notif-direct-statistics-update-apply-actions-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }

    augment "/directstat:get-flow-statistics/directstat:output/directstat:flow-and-statistics-map-list/directstat:instructions/directstat:instruction/directstat:instruction/directstat:write-actions-case/directstat:write-actions/directstat:action/directstat:action" {
        case "nx-action-reg-load-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-reg-load-grouping;
        }
        case "nx-action-reg-move-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-reg-move-grouping;
        }
        case "nx-action-output-reg-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-output-reg-grouping;
        }
        case "nx-action-resubmit-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-resubmit-grouping;
        }
        case "nx-action-fin-timeout-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-fin-timeout-grouping;
        }
        case "nx-action-multipath-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-multipath-grouping;
        }
        case "nx-action-conntrack-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-conntrack-grouping;
        }
        case "nx-action-ct-clear-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-ct-clear-grouping;
        }
        case "nx-action-learn-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-learn-grouping;
        }
        case "nx-action-encap-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-encap-grouping;
        }
        case "nx-action-decap-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-decap-grouping;
        }
        case "nx-action-dec-nsh-ttl-notif-direct-statistics-update-write-actions-case" {
            uses nx-action-dec-nsh-ttl-grouping;
        }
    }
}