(command.ShFunction
  name: make_hdb
  body: 
    (BraceGroup
      children: [
        (command.If
          arms: [
            (if_arm
              cond: 
                (condition.Shell
                  commands: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<Id.Lit_LBracket '['>} {<-z>} 
                          {
                            (DQ 
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<which>} {<mke2fs>})
                              )
                            )
                          } {<Id.Lit_RBracket ']'>}
                        )
                        (C {<Id.Lit_LBracket '['>} {<-z>} 
                          {
                            (DQ 
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<which>} {<tune2fs>})
                              )
                            )
                          } {<Id.Lit_RBracket ']'>}
                        )
                      ]
                    )
                  ]
                )
              action: [
                (C {<export>} 
                  {<Id.Lit_VarLike 'PATH='> <'/sbin'> <Id.Lit_Colon ':'> <'/usr/sbin'> 
                    <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$PATH')
                  }
                )
              ]
              spids: [11 44]
            )
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp Id.Op_DAmp]
          children: [
            (C {<truncate>} {<-s>} {(${ Id.VSub_Name HDBMEGS) <m>} {(DQ ($ Id.VSub_DollarName '$HDB'))})
            (C {<mke2fs>} {<-q>} {<-b>} {<1024>} {<-F>} {(DQ ($ Id.VSub_DollarName '$HDB'))} {<-i>} {<4096>})
            (C {<tune2fs>} {<-j>} {<-c>} {<0>} {<-i>} {<0>} {(DQ ($ Id.VSub_DollarName '$HDB'))})
          ]
        )
        (command.AndOr
          ops: [Id.Op_DAmp]
          children: [
            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
      ]
    )
)