module all {

  namespace "yang:all";
  prefix "all";
  yang-version 1;

  choice name {
             case a {
                 leaf udp {
                     type empty;
                 }
             }
             case b {
                 leaf tcp {
                    type empty;
           }
       }
   }


   container c {
       choice name {
             case a {
                 leaf udp {
                     type empty;
                 }
             }
             case b {
                 leaf tcp {
                    type empty;
                 }
             }
         }
   }

   list l {
   config false;
choice name {
             case a {
                 leaf udp {
                     type empty;
                 }
             }
             case b {
                 leaf tcp {
                    type empty;
                 }
             }
         }
   }


   grouping g {
    choice name {
             case a {
                 leaf udp {
                     type empty;
                 }
             }
             case b {
                 leaf tcp {
                    type empty;
                 }
             }
         }
   }
    rpc r {
        input {
           choice name {
             case a {
                 leaf udp {
                     type empty;
                 }
             }
             case b {
                 leaf tcp {
                    type empty;
                 }
             }
         }
       }
      output {
        choice name {
             case a {
                 leaf udp {
                     type empty;
                 }
             }
             case b {
                 leaf tcp {
                    type empty;
                 }
             }
         }
        }
     }

     augment /name {
        choice name {
             case a {
                 leaf udp {
                     type empty;
                 }
                 container cont1 {
                     container cont2 {
                     choice name {
                                  case a {
                                      leaf udp {
                                          type empty;
                                      }
                                      container cont1 {
                                          container cont2 {
                                               leaf udp1 {
                                                  type empty;
                                                   }
                                           }
                                          leaf udp2 {
                                              type empty;
                                          }
                                      }
                                  }
                                  case b {
                                      leaf tcp3 {
                                         type empty;
                                      }
                                  }
                              }
                          leaf udp4 {
                             type empty;
                              }
                      }
                     leaf udp5 {
                         type empty;
                     }
                 }
             }
             case b {
                 leaf tcp2 {
                    type empty;
                 }
             }
         }
         choice name1 {
                      case a {
                          leaf udp {
                              type empty;
                          }
                      }
                      case b {
                          leaf tcp {
                             type empty;
                          }
                      }
                  }
     }

}