(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'class='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'class='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'class='> name:class)
          op: assign_op.Equal
          rhs: {(DQ <uzip>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'base='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'base='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'base='> name:base)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <basename>
                    more_env: []
                    words: [{<basename>} {($ Id.VSub_Number 0)}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <uzip_test_cleanup>
      name: uzip_test_cleanup
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-n>}
                                {(DQ ($ Id.VSub_DollarName mntpoint))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <umount>
                      more_env: []
                      words: [{<umount>} {($ Id.VSub_DollarName mntpoint)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <rmdir>
                      more_env: []
                      words: [{<rmdir>} {($ Id.VSub_DollarName mntpoint)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [29 42]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <geom_test_cleanup>
              more_env: []
              words: [{<geom_test_cleanup>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {<uzip_test_cleanup>} {<ABRT>} {<EXIT>} {<INT>} {<TERM>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [
        {<.>}
        {
          (CommandSub
            left_token: <Id.Left_Backtick '`'>
            child: 
              (command.Simple
                blame_tok: <dirname>
                more_env: []
                words: [{<dirname>} {($ Id.VSub_Number 0)}]
                redirects: []
                do_fork: T
              )
            right: <Id.Backtick_Right '`'>
          ) <'/../geom_subr.sh'>
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'mntpoint='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'mntpoint='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mntpoint='> name:mntpoint)
              op: assign_op.Equal
              rhs: 
                {
                  (CommandSub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Simple
                        blame_tok: <mktemp>
                        more_env: []
                        words: [{<mktemp>} {<-d>} {<tmp.XXXXXX>}]
                        redirects: []
                        do_fork: T
                      )
                    right: <Id.Eof_RParen _>
                  )
                }
            )
          ]
          redirects: []
        )
        (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
      ]
      ops: [<Id.Op_DPipe _>]
    )
  ]
)