(command.CommandList
  children: [
    (C {<set>} {<-e>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:mkimg)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<basename>} {(DQ ($ Id.VSub_Number '$0'))})
                )
              )
            }
          spids: [8]
        )
      ]
    )
    (command.ShFunction
      name: usage
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'usage: '> ($ Id.VSub_DollarName '$mkimg') 
                    <
' [-d dir] [-t tag] [--compression algo| --no-compression] script [script-args]'
                    >
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'   ie: '> ($ Id.VSub_DollarName '$mkimg') 
                    <' -t someuser/debian debootstrap --variant=minbase jessie'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'       '> ($ Id.VSub_DollarName '$mkimg') 
                    <
' -t someuser/ubuntu debootstrap --include=ubuntu-minimal --components=main,universe trusty'
                    >
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'       '> ($ Id.VSub_DollarName '$mkimg') 
                    <' -t someuser/busybox busybox-static'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'       '> ($ Id.VSub_DollarName '$mkimg') 
                    <' -t someuser/centos:5 rinse --distribution centos-5'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'       '> ($ Id.VSub_DollarName '$mkimg') 
                    <' -t someuser/mageia:4 mageia-urpmi --version=4'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'       '> ($ Id.VSub_DollarName '$mkimg') 
                    <' -t someuser/mageia:4 mageia-urpmi --version=4 --mirror=http://somemirror/'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'       '> ($ Id.VSub_DollarName '$mkimg') <' -t someuser/solaris solaris'>)}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:scriptDir)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (C {<dirname>} 
                      {
                        (DQ 
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<readlink>} {<-f>} {(DQ ($ Id.VSub_DollarName '$BASH_SOURCE'))})
                          )
                        )
                      }
                    )
                ) <'/mkimage'>
              )
            }
          spids: [131]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:os)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [152]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:os)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>} {<-o>}))}
          spids: [154]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.Binary
              op_id: Id.BoolBinary_GlobDEqual
              left: {($ Id.VSub_DollarName '$os')}
              right: {(DQ <Solaris>)}
            )
        )
        (C {<export>} 
          {<Id.Lit_VarLike 'PATH='> <'/usr/gnu/bin'> <Id.Lit_Colon ':'> ($ Id.VSub_DollarName '$PATH')}
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.DBracket
          expr: 
            (bool_expr.LogicalAnd
              left: 
                (bool_expr.Binary
                  op_id: Id.BoolBinary_GlobDEqual
                  left: {($ Id.VSub_DollarName '$os')}
                  right: {(DQ <Solaris>)}
                )
              right: 
                (bool_expr.Binary
                  op_id: Id.BoolBinary_GlobNEqual
                  left: {($ Id.VSub_DollarName '$EUID')}
                  right: {(DQ <0>)}
                )
            )
        )
        (command.Simple
          words: [{<echo>} {(DQ <'image create on Solaris requires superuser privilege'>)}]
          redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:optTemp)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (C {<getopt>} {<--options>} {(SQ <'+d:t:c:hC'>)} {<--longoptions>} 
                    {(SQ <'dir:,tag:,compression:,no-compression,help'>)} {<--name>} {(DQ ($ Id.VSub_DollarName '$mkimg'))} {<-->} {(DQ ($ Id.VSub_At '$@'))}
                  )
              )
            }
          spids: [228]
        )
      ]
    )
    (C {<eval>} {<set>} {<-->} {(DQ ($ Id.VSub_DollarName '$optTemp'))})
    (C {<unset>} {<optTemp>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:dir)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [272]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tag)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [274]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:compression)
          op: assign_op.Equal
          rhs: {(DQ <auto>)}
          spids: [276]
        )
      ]
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)]
        )
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{<-d>} {<--dir>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:dir)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_Number '$2'))}
                              spids: [303]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>} {<2>})
                  ]
                  spids: [298 301 314 -1]
                )
                (case_arm
                  pat_list: [{<-t>} {<--tag>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:tag)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_Number '$2'))}
                              spids: [322]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>} {<2>})
                  ]
                  spids: [317 320 333 -1]
                )
                (case_arm
                  pat_list: [{<--compression>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:compression)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_Number '$2'))}
                              spids: [339]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>} {<2>})
                  ]
                  spids: [336 337 350 -1]
                )
                (case_arm
                  pat_list: [{<--no-compression>}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:compression)
                              op: assign_op.Equal
                              rhs: {(DQ <none>)}
                              spids: [356]
                            )
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<shift>} {<1>})
                  ]
                  spids: [353 354 367 -1]
                )
                (case_arm
                  pat_list: [{<-h>} {<--help>}]
                  action: [(C {<usage>})]
                  spids: [370 373 377 -1]
                )
                (case_arm
                  pat_list: [{<-->}]
                  action: [
                    (command.Sentence
                      child: (C {<shift>})
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Break break>)
                  ]
                  spids: [380 381 389 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:script)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$1'))}
          spids: [397]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$script'))} {<Id.Lit_RBracket ']'>})
        (C {<usage>})
      ]
    )
    (C {<shift>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$compression'))} 
                      {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(SQ <auto>)} {<Id.Lit_RBracket ']'>}
                    )
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$compression'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:compression)
                  op: assign_op.Equal
                  rhs: {(SQ <xz>)}
                  spids: [449]
                )
              ]
            )
          ]
          spids: [417 446]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$compression'))} 
          {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(SQ <none>)} {<Id.Lit_RBracket ']'>}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:compression)
              op: assign_op.Equal
              rhs: {(SQ )}
              spids: [474]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-x>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$scriptDir') <'/'> ($ Id.VSub_DollarName '$script'))
                      } {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'error: '> ($ Id.VSub_DollarName '$script') 
                    <' does not exist or is not executable'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'  see '> ($ Id.VSub_DollarName '$scriptDir') <' for possible scripts'>)}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [479 496]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobDEqual
                          left: {(DQ ($ Id.VSub_DollarName '$script'))}
                          right: {<.> <Id.Lit_Other '*'>}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'error: '> ($ Id.VSub_DollarName '$script') 
                    <' is a script helper, not a script'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {(DQ <'  see '> ($ Id.VSub_DollarName '$scriptDir') <' for possible scripts'>)}
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [533 549]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:delDir)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [583]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$dir'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:dir)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<mktemp>} {<-d>} 
                              {
                                (braced_var_sub
                                  token: <Id.VSub_Name TMPDIR>
                                  suffix_op: 
                                    (suffix_op.Unary
                                      tok: <Id.VTest_ColonHyphen ':-'>
                                      arg_word: {<Id.Lit_Slash '/'> <var> <Id.Lit_Slash '/'> <tmp>}
                                    )
                                ) <'/docker-mkimage.XXXXXXXXXX'>
                              }
                            )
                        )
                      )
                    }
                  spids: [601]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:delDir)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [621]
                )
              ]
            )
          ]
          spids: [585 598]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:rootfsDir)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$dir') <'/rootfs'>)}
          spids: [627]
        )
      ]
    )
    (command.Subshell
      child: 
        (command.CommandList
          children: [
            (command.Sentence child:(C {<set>} {<-x>}) terminator:<Id.Op_Semi _>)
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$rootfsDir'))})
          ]
        )
    )
    (C {(DQ ($ Id.VSub_DollarName '$scriptDir') <'/'> ($ Id.VSub_DollarName '$script'))} 
      {(DQ ($ Id.VSub_DollarName '$rootfsDir'))} {(DQ ($ Id.VSub_At '$@'))}
    )
    (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName '$rootfsDir') <'/dev'>)} 
      {(DQ ($ Id.VSub_DollarName '$rootfsDir') <'/proc'>)}
    )
    (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$rootfsDir') <'/dev'>)} 
      {(DQ ($ Id.VSub_DollarName '$rootfsDir') <'/proc'>)}
    )
    (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$rootfsDir') <'/etc'>)})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(DQ ($ Id.VSub_DollarName '$rootfsDir') <'/etc/resolv.conf'>)}
        )
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_span_id: 729
              stdin_parts: [<'nameserver 8.8.8.8\n'> <'nameserver 8.8.4.4\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tarFile)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$dir') <'/rootfs.tar'> 
                (braced_var_sub
                  token: <Id.VSub_Name compression>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_ColonPlus ':+'>
                      arg_word: {<.> ($ Id.VSub_DollarName '$compression')}
                    )
                )
              )
            }
          spids: [731]
        )
      ]
    )
    (C {<touch>} {(DQ ($ Id.VSub_DollarName '$tarFile'))})
    (command.Subshell
      child: 
        (command.CommandList
          children: [
            (C {<set>} {<-x>})
            (C {<tar>} {<--numeric-owner>} {<--create>} {<--auto-compress>} {<--file>} 
              {(DQ ($ Id.VSub_DollarName '$tarFile'))} {<--directory>} {(DQ ($ Id.VSub_DollarName '$rootfsDir'))} 
              {<--transform> <Id.Lit_Equals '='> (SQ <'s,^./,,'>)} {<.>}
            )
          ]
        )
    )
    (command.Simple
      words: [{<echo>} {(DQ <'+ cat > \''> ($ Id.VSub_DollarName '$dir') <'/Dockerfile\''>)}]
      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(DQ ($ Id.VSub_DollarName '$dir') <'/Dockerfile'>)}
        )
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 823
              stdin_parts: [
                <'FROM scratch\n'>
                <'ADD '>
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: (C {<basename>} {(DQ ($ Id.VSub_DollarName '$tarFile'))})
                )
                <' /\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.ForEach
      iter_name: shell
      iter_words: [{<'/bin/bash'>} {<'/usr/bin/fish'>} {<'/usr/bin/zsh'>} {<'/bin/sh'>}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (C {<Id.Lit_LBracket '['>} {<-x>} 
                              {
                                (DQ ($ Id.VSub_DollarName '$rootfsDir') <'/'> 
                                  ($ Id.VSub_DollarName '$shell')
                                )
                              } {<Id.Lit_RBracket ']'>}
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Subshell
                      child: 
                        (command.CommandList
                          children: [
                            (command.Sentence
                              child: (C {<set>} {<-x>})
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              words: [
                                {<echo>}
                                {(SQ <'CMD ["'>) (DQ ($ Id.VSub_DollarName '$shell')) (SQ <'"]'>)}
                              ]
                              redirects: [
                                (redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(DQ ($ Id.VSub_DollarName '$dir') <'/Dockerfile'>)}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                        )
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Break break>)
                  ]
                  spids: [846 861]
                )
              ]
            )
          ]
        )
    )
    (command.Subshell
      child: 
        (command.CommandList
          children: [
            (command.Sentence child:(C {<set>} {<-x>}) terminator:<Id.Op_Semi _>)
            (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName '$rootfsDir'))})
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$tag'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (command.Sentence
                      child: (C {<set>} {<-x>})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<docker>} {<build>} {<-t>} {(DQ ($ Id.VSub_DollarName '$tag'))} 
                      {(DQ ($ Id.VSub_DollarName '$dir'))}
                    )
                  ]
                )
            )
          ]
          spids: [919 930]
        )
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$delDir'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (command.Sentence
                      child: (C {<set>} {<-x>})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<docker>} {<build>} {(DQ ($ Id.VSub_DollarName '$dir'))})
                  ]
                )
            )
          ]
          spids: [956 967]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$delDir'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Subshell
              child: 
                (command.CommandList
                  children: [
                    (command.Sentence
                      child: (C {<set>} {<-x>})
                      terminator: <Id.Op_Semi _>
                    )
                    (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName '$dir'))})
                  ]
                )
            )
          ]
          spids: [994 1005]
        )
      ]
    )
  ]
)