(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PATH)
          op: assign_op.Equal
          rhs: {(/bin) (Id.Lit_Other ':') (/usr/bin) (Id.Lit_Other ':') (/usr/sbin)}
          spids: [26]
        )
      ]
    )
    (command.ShFunction
      name: display_usage
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:VERSION_NUMBER)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:43)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (C {(grep)} {(DQ ('[') (Id.Lit_Other '$') (']FreeBSD:'))} 
                                    {($ Id.VSub_Number '$0')}
                                  )
                                  (C {(cut)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:' ' span_id:63))} 
                                    {(-f)} {(4)}
                                  )
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [42]
                )
              ]
            )
            (C {(echo)} {(DQ ('mergemaster version ') (${ Id.VSub_Name VERSION_NUMBER))})
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: 'Usage: mergemaster [-scrvhpCP] [-a|[-iFU]] [--run-updates=always|never]'
                    span_id: 85
                  )
                )
              }
            )
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: '    [-m /path] [-t /path] [-d] [-u N] [-w N] [-A arch] [-D /path]'
                    span_id: 92
                  )
                )
              }
            )
            (C {(echo)} {(DQ ('Options:'))})
            (C {(echo)} {(DQ ('  -s  Strict comparison (diff every pair of files)'))})
            (C {(echo)} {(DQ ('  -c  Use context diff instead of unified diff'))})
            (C {(echo)} 
              {(DQ ('  -r  Re-run on a previously cleaned directory (skip temproot creation)'))}
            )
            (C {(echo)} {(DQ ('  -v  Be more verbose about the process, include additional checks'))})
            (C {(echo)} {(DQ ('  -a  Leave all files that differ to merge by hand'))})
            (C {(echo)} {(DQ ('  -h  Display more complete help'))})
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: 
'  -i  Automatically install files that do not exist in destination directory'
                    span_id: 148
                  )
                )
              }
            )
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: '  -p  Pre-buildworld mode, only compares crucial files'
                    span_id: 155
                  )
                )
              }
            )
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: '  -F  Install files that differ only by revision control Id ($FreeBSD)'
                    span_id: 162
                  )
                )
              }
            )
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: '  -C  Compare local rc.conf variables to the defaults'
                    span_id: 169
                  )
                )
              }
            )
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: '  -P  Preserve files that are overwritten'
                    span_id: 176
                  )
                )
              }
            )
            (C {(echo)} {(DQ ('  -U  Attempt to auto upgrade files that have not been user modified'))})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'      ***DANGEROUS***' span_id:190))})
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: 
'  --run-updates=  Specify always or never to run newalises, pwd_mkdb, etc.'
                    span_id: 197
                  )
                )
              }
            )
            (C {(echo)} {(SQ )})
            (C {(echo)} {(DQ ('  -m /path/directory  Specify location of source to do the make in'))})
            (C {(echo)} {(DQ ('  -t /path/directory  Specify temp root directory'))})
            (C {(echo)} 
              {
                (DQ ('  -d  Add date and time to directory name (e.g., /var/tmp/temproot.') 
                  (command_sub
                    left_token: (Token id:Id.Left_Backtick val:'`' span_id:225)
                    command_list: 
                      (command.CommandList
                        children: [
                          (C {(date)} 
                            {(Id.Lit_Other '+') (Id.Lit_Other '%') (m) (Id.Lit_Other '%') (d.) 
                              (Id.Lit_Other '%') (H.) (Id.Lit_Other '%') (M)
                            }
                          )
                        ]
                      )
                  ) (')')
                )
              }
            )
            (C {(echo)} {(DQ ('  -u N  Specify a numeric umask'))})
            (C {(echo)} {(DQ ('  -w N  Specify a screen width in columns to sdiff'))})
            (C {(echo)} {(DQ ('  -A architecture  Alternative architecture name to pass to make'))})
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: 
'  -D /path/directory  Specify the destination directory to install files to'
                    span_id: 268
                  )
                )
              }
            )
            (C {(echo)} {(SQ )})
          ]
        )
    )
    (command.ShFunction
      name: display_help
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} {(DQ ('* To specify a directory other than /var/tmp/temproot for the'))})
            (C {(echo)} {(DQ ('  temporary root environment, use -t /path/to/temp/root'))})
            (C {(echo)} {(DQ ('* The -w option takes a number as an argument for the column width'))})
            (C {(echo)} {(DQ ('  of the screen.  The default is 80.'))})
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: '* The -a option causes mergemaster to run without prompting.'
                    span_id: 319
                  )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: merge_loop
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name VERBOSE))}
              arms: [
                (case_arm pat_list:[{(SQ )}] spids:[350 352 354 -1])
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(echo)} {(DQ ('   *** Type h at the sdiff prompt (%) to get usage help'))})
                  ]
                  spids: [357 358 368 -1]
                )
              ]
            )
            (C {(echo)} {(SQ )})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MERGE_AGAIN)
                  op: assign_op.Equal
                  rhs: {(yes)}
                  spids: [380]
                )
              ]
            )
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:384)
              cond: [
                (command.Sentence
                  child: 
                    (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name MERGE_AGAIN))} 
                      {(Id.Lit_Equals '=')} {(DQ (yes))} {(Id.Lit_RBracket ']')}
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:401)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (C {(cp)} {(-p)} {(DQ (${ Id.VSub_Name COMPFILE))} 
                      {(DQ (${ Id.VSub_Name COMPFILE) (.merged))}
                    )
                    (C {(sdiff)} {(-o)} {(DQ (${ Id.VSub_Name COMPFILE) (.merged))} {(--text)} 
                      {(--suppress-common-lines)} 
                      {(--width) (Id.Lit_Equals '=') 
                        (braced_var_sub
                          token: (Token id:Id.VSub_Name val:SCREEN_WIDTH span_id:448)
                          suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(80)})
                        )
                      } 
                      {
                        (DQ (${ Id.VSub_Name DESTDIR) 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:COMPFILE span_id:458)
                            suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)})
                          )
                        )
                      } {(DQ (${ Id.VSub_Name COMPFILE))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:INSTALL_MERGED)
                          op: assign_op.Equal
                          rhs: {(V)}
                          spids: [471]
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: (Token id:Id.KW_While val:while span_id:475)
                      cond: [
                        (command.Sentence
                          child: 
                            (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name INSTALL_MERGED))} 
                              {(Id.Lit_Equals '=')} {(DQ (v))} {(-o)} {(DQ (${ Id.VSub_Name INSTALL_MERGED))} {(Id.Lit_Equals '=')} {(DQ (V))} 
                              {(Id.Lit_RBracket ']')}
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:506)
                        )
                      ]
                      body: 
                        (command.DoGroup
                          children: [
                            (C {(echo)} {(SQ )})
                            (C {(echo)} {(DQ ("  Use 'i' to install merged file"))})
                            (C {(echo)} {(DQ ("  Use 'r' to re-do the merge"))})
                            (C {(echo)} {(DQ ("  Use 'v' to view the merged file"))})
                            (C {(echo)} 
                              {(DQ ('  Default is to leave the temporary file to deal with by hand'))}
                            )
                            (C {(echo)} {(SQ )})
                            (C {(echo)} {(-n)} 
                              {
                                (DQ 
                                  (
'    *** How should I deal with the merged file? [Leave it for later] '
                                  )
                                )
                              }
                            )
                            (C {(read)} {(INSTALL_MERGED)})
                            (command.Case
                              to_match: {(DQ (${ Id.VSub_Name INSTALL_MERGED))}
                              arms: [
                                (case_arm
                                  pat_list: [{(Id.Lit_LBracket '[') (iI) (Id.Lit_RBracket ']')}]
                                  action: [
                                    (C {(mv)} {(DQ (${ Id.VSub_Name COMPFILE) (.merged))} 
                                      {(DQ (${ Id.VSub_Name COMPFILE))}
                                    )
                                    (C {(echo)} {(SQ )})
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(mm_install)} {(DQ (${ Id.VSub_Name COMPFILE))})
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:614)
                                            )
                                          ]
                                          action: [
                                            (C {(echo)} 
                                              {
                                                (DQ ('     *** Merged version of ') 
                                                  (${ Id.VSub_Name COMPFILE) (' installed successfully')
                                                )
                                              }
                                            )
                                          ]
                                          spids: [605 616]
                                        )
                                      ]
                                      else_action: [
                                        (C {(echo)} 
                                          {
                                            (DQ ('     *** Problem installing ') 
                                              (${ Id.VSub_Name COMPFILE) (', it will remain to merge by hand later')
                                            )
                                          }
                                        )
                                      ]
                                    )
                                    (C {(unset)} {(MERGE_AGAIN)})
                                  ]
                                  spids: [577 580 652 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_LBracket '[') (rR) (Id.Lit_RBracket ']')}]
                                  action: [(C {(rm)} {(DQ (${ Id.VSub_Name COMPFILE) (.merged))})]
                                  spids: [655 658 671 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_LBracket '[') (vV) (Id.Lit_RBracket ']')}]
                                  action: [
                                    (C {(${ Id.VSub_Name PAGER)} 
                                      {(DQ (${ Id.VSub_Name COMPFILE) (.merged))}
                                    )
                                  ]
                                  spids: [674 677 692 -1]
                                )
                                (case_arm
                                  pat_list: [{(SQ )}]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ ('   *** ') (${ Id.VSub_Name COMPFILE) 
                                          (' will remain for your consideration')
                                        )
                                      }
                                    )
                                    (C {(unset)} {(MERGE_AGAIN)})
                                  ]
                                  spids: [695 697 716 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_Star '*')}]
                                  action: [
                                    (C {(echo)} 
                                      {(DQ ('invalid choice: ') (${ Id.VSub_Name INSTALL_MERGED))}
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:INSTALL_MERGED)
                                          op: assign_op.Equal
                                          rhs: {(V)}
                                          spids: [733]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [719 720 737 -1]
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: diff_loop
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:HANDLE_COMPFILE)
                  op: assign_op.Equal
                  rhs: {(v)}
                  spids: [766]
                )
              ]
            )
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:771)
              cond: [
                (command.Sentence
                  child: 
                    (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))} 
                      {(Id.Lit_Equals '=')} {(DQ (v))} {(-o)} {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))} {(Id.Lit_Equals '=')} {(DQ (V))} {(-o)} 
                      {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))} {(Id.Lit_Equals '=')} {(DQ ('NOT V'))} {(Id.Lit_RBracket ']')}
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:818)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(-f)} 
                                  {
                                    (DQ (${ Id.VSub_Name DESTDIR) 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:COMPFILE span_id:834)
                                        suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)})
                                      )
                                    )
                                  } {(-a)} {(-f)} {(DQ (${ Id.VSub_Name COMPFILE))} {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:851)
                            )
                          ]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                                          {(DQ (${ Id.VSub_Name AUTO_UPGRADE))} {(-a)} {(-n)} {(DQ (${ Id.VSub_Name CHANGED))} {(Id.Lit_RBracket ']')}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:879)
                                    )
                                  ]
                                  action: [
                                    (command.Case
                                      to_match: {(DQ (${ Id.VSub_Name CHANGED))}
                                      arms: [
                                        (case_arm
                                          pat_list: [
                                            {(Id.Lit_Star '*') (Id.Lit_Other ':') 
                                              (${ Id.VSub_Name DESTDIR) 
                                              (braced_var_sub
                                                token: 
                                                  (Token
                                                    id: Id.VSub_Name
                                                    val: COMPFILE
                                                    span_id: 901
                                                  )
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op_id: Id.VOp1_Pound
                                                    arg_word: {(.)}
                                                  )
                                              ) (Id.Lit_Other ':') (Id.Lit_Star '*')
                                            }
                                          ]
                                          spids: [895 907 909 -1]
                                        )
                                        (case_arm
                                          pat_list: [{(Id.Lit_Star '*')}]
                                          action: [
                                            (C {(echo)} {(SQ )})
                                            (C {(echo)} 
                                              {
                                                (DQ ('  *** ') (${ Id.VSub_Name COMPFILE) 
                                                  (' has not been user modified.')
                                                )
                                              }
                                            )
                                            (C {(echo)} {(SQ )})
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (command.Sentence
                                                      child: 
                                                        (C {(mm_install)} 
                                                          {(DQ (${ Id.VSub_Name COMPFILE))}
                                                        )
                                                      terminator: 
                                                        (Token
                                                          id: Id.Op_Semi
                                                          val: ';'
                                                          span_id: 952
                                                        )
                                                    )
                                                  ]
                                                  action: [
                                                    (C {(echo)} 
                                                      {
                                                        (DQ ('   *** ') (${ Id.VSub_Name COMPFILE) 
                                                          (' upgraded successfully')
                                                        )
                                                      }
                                                    )
                                                    (C {(echo)} {(SQ )})
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              name: AUTO_UPGRADED_FILES
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ 
                                                                (${ Id.VSub_Name AUTO_UPGRADED_FILES) ('      ') (${ Id.VSub_Name DESTDIR) 
                                                                (braced_var_sub
                                                                  token: 
                                                                    (Token
                                                                      id: Id.VSub_Name
                                                                      val: COMPFILE
                                                                      span_id: 988
                                                                    )
                                                                  suffix_op: 
                                                                    (suffix_op.Unary
                                                                      op_id: Id.VOp1_Pound
                                                                      arg_word: {(.)}
                                                                    )
                                                                ) ('\n')
                                                              )
                                                            }
                                                          spids: [978]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  spids: [943 954]
                                                )
                                              ]
                                              else_action: [
                                                (C {(echo)} 
                                                  {
                                                    (DQ ('   *** Problem upgrading ') 
                                                      (${ Id.VSub_Name COMPFILE) (', it will remain to merge by hand')
                                                    )
                                                  }
                                                )
                                              ]
                                            )
                                            (command.ControlFlow
                                              token: 
                                                (Token
                                                  id: Id.ControlFlow_Return
                                                  val: return
                                                  span_id: 1013
                                                )
                                            )
                                          ]
                                          spids: [915 916 1016 -1]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [856 881]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Id.Lit_LBracket '[')} 
                                          {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))} {(Id.Lit_Equals '=')} {(DQ (v))} {(-o)} {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))} {(Id.Lit_Equals '=')} 
                                          {(DQ (V))} {(Id.Lit_RBracket ']')}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1056)
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(SQ )})
                                    (C {(echo)} 
                                      {
                                        (SQ 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: 
'   ======================================================================   '
                                            span_id: 1070
                                          )
                                        )
                                      }
                                    )
                                    (C {(echo)} {(SQ )})
                                    (command.Pipeline
                                      children: [
                                        (command.Subshell
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {(echo)} 
                                                  {
                                                    (DQ ('  *** Displaying differences between ') 
                                                      (${ Id.VSub_Name COMPFILE) (' and installed version:')
                                                    )
                                                  }
                                                )
                                                (C {(echo)} {(SQ )})
                                                (C {(diff)} {(${ Id.VSub_Name DIFF_FLAG)} 
                                                  {(${ Id.VSub_Name DIFF_OPTIONS)} 
                                                  {
                                                    (DQ (${ Id.VSub_Name DESTDIR) 
                                                      (braced_var_sub
                                                        token: 
                                                          (Token
                                                            id: Id.VSub_Name
                                                            val: COMPFILE
                                                            span_id: 1115
                                                          )
                                                        suffix_op: 
                                                          (suffix_op.Unary
                                                            op_id: Id.VOp1_Pound
                                                            arg_word: {(.)}
                                                          )
                                                      )
                                                    )
                                                  } {(DQ (${ Id.VSub_Name COMPFILE))}
                                                )
                                              ]
                                            )
                                        )
                                        (C {(${ Id.VSub_Name PAGER)})
                                      ]
                                      negated: F
                                    )
                                    (C {(echo)} {(SQ )})
                                  ]
                                  spids: [1025 1058]
                                )
                              ]
                            )
                          ]
                          spids: [823 853]
                        )
                      ]
                      else_action: [
                        (C {(echo)} {(SQ )})
                        (C {(echo)} 
                          {
                            (DQ ('  *** There is no installed version of ') (${ Id.VSub_Name COMPFILE))
                          }
                        )
                        (C {(echo)} {(SQ )})
                        (command.Case
                          to_match: {(DQ (${ Id.VSub_Name AUTO_INSTALL))}
                          arms: [
                            (case_arm
                              pat_list: [
                                {(Id.Lit_LBracket '[') (Yy) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') 
                                  (Ee) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Ss) (Id.Lit_RBracket ']')
                                }
                              ]
                              action: [
                                (C {(echo)} {(SQ )})
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: (C {(mm_install)} {(DQ (${ Id.VSub_Name COMPFILE))})
                                          terminator: (Token id:Id.Op_Semi val:';' span_id:1209)
                                        )
                                      ]
                                      action: [
                                        (C {(echo)} 
                                          {
                                            (DQ ('   *** ') (${ Id.VSub_Name COMPFILE) 
                                              (' installed successfully')
                                            )
                                          }
                                        )
                                        (C {(echo)} {(SQ )})
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:AUTO_INSTALLED_FILES)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES) 
                                                    ('      ') (${ Id.VSub_Name DESTDIR) 
                                                    (braced_var_sub
                                                      token: 
                                                        (Token
                                                          id: Id.VSub_Name
                                                          val: COMPFILE
                                                          span_id: 1245
                                                        )
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op_id: Id.VOp1_Pound
                                                          arg_word: {(.)}
                                                        )
                                                    ) ('\n')
                                                  )
                                                }
                                              spids: [1235]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [1200 1211]
                                    )
                                  ]
                                  else_action: [
                                    (C {(echo)} 
                                      {
                                        (DQ ('   *** Problem installing ') (${ Id.VSub_Name COMPFILE) 
                                          (', it will remain to merge by hand')
                                        )
                                      }
                                    )
                                  ]
                                )
                                (command.ControlFlow
                                  token: (Token id:Id.ControlFlow_Return val:return span_id:1270)
                                )
                              ]
                              spids: [1182 1191 1273 -1]
                            )
                            (case_arm
                              pat_list: [{(Id.Lit_Star '*')}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:NO_INSTALLED)
                                      op: assign_op.Equal
                                      rhs: {(yes)}
                                      spids: [1280]
                                    )
                                  ]
                                )
                              ]
                              spids: [1276 1277 1284 -1]
                            )
                          ]
                        )
                      ]
                    )
                    (C {(echo)} {(DQ ("  Use 'd' to delete the temporary ") (${ Id.VSub_Name COMPFILE))})
                    (C {(echo)} 
                      {(DQ ("  Use 'i' to install the temporary ") (${ Id.VSub_Name COMPFILE))}
                    )
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name NO_INSTALLED))}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ )}]
                          action: [
                            (C {(echo)} 
                              {(DQ ("  Use 'm' to merge the temporary and installed versions"))}
                            )
                            (C {(echo)} {(DQ ("  Use 'v' to view the diff results again"))})
                          ]
                          spids: [1325 1327 1344 -1]
                        )
                      ]
                    )
                    (C {(echo)} {(SQ )})
                    (C {(echo)} {(DQ ('  Default is to leave the temporary file to deal with by hand'))})
                    (C {(echo)} {(SQ )})
                    (C {(echo)} {(-n)} {(DQ ('How should I deal with this? [Leave it for later] '))})
                    (C {(read)} {(HANDLE_COMPFILE)})
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name HANDLE_COMPFILE))}
                      arms: [
                        (case_arm
                          pat_list: [{(Id.Lit_LBracket '[') (dD) (Id.Lit_RBracket ']')}]
                          action: [
                            (C {(rm)} {(DQ (${ Id.VSub_Name COMPFILE))})
                            (C {(echo)} {(SQ )})
                            (C {(echo)} {(DQ ('   *** Deleting ') (${ Id.VSub_Name COMPFILE))})
                          ]
                          spids: [1395 1398 1426 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_LBracket '[') (iI) (Id.Lit_RBracket ']')}]
                          action: [
                            (C {(echo)} {(SQ )})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: (C {(mm_install)} {(DQ (${ Id.VSub_Name COMPFILE))})
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:1450)
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ ('   *** ') (${ Id.VSub_Name COMPFILE) 
                                          (' installed successfully')
                                        )
                                      }
                                    )
                                  ]
                                  spids: [1441 1452]
                                )
                              ]
                              else_action: [
                                (C {(echo)} 
                                  {
                                    (DQ ('   *** Problem installing ') (${ Id.VSub_Name COMPFILE) 
                                      (', it will remain to merge by hand')
                                    )
                                  }
                                )
                              ]
                            )
                          ]
                          spids: [1429 1432 1483 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_LBracket '[') (mM) (Id.Lit_RBracket ']')}]
                          action: [
                            (command.Case
                              to_match: {(DQ (${ Id.VSub_Name NO_INSTALLED))}
                              arms: [
                                (case_arm
                                  pat_list: [{(SQ )}]
                                  action: [(C {(merge_loop)})]
                                  spids: [1503 1505 1515 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_Star '*')}]
                                  action: [
                                    (C {(echo)} {(SQ )})
                                    (C {(echo)} 
                                      {
                                        (DQ ('   *** There is no installed version of ') 
                                          (${ Id.VSub_Name COMPFILE)
                                        )
                                      }
                                    )
                                    (C {(echo)} {(SQ )})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:HANDLE_COMPFILE)
                                          op: assign_op.Equal
                                          rhs: {(DQ ('NOT V'))}
                                          spids: [1544]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [1518 1519 1550 -1]
                                )
                              ]
                            )
                          ]
                          spids: [1486 1489 1559 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_LBracket '[') (vV) (Id.Lit_RBracket ']')}]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Continue val:continue span_id:1568)
                            )
                          ]
                          spids: [1562 1565 1571 -1]
                        )
                        (case_arm
                          pat_list: [{(SQ )}]
                          action: [
                            (C {(echo)} {(SQ )})
                            (C {(echo)} 
                              {
                                (DQ ('   *** ') (${ Id.VSub_Name COMPFILE) 
                                  (' will remain for your consideration')
                                )
                              }
                            )
                          ]
                          spids: [1574 1576 1596 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (C {(echo)} {(DQ ('invalid choice: ') (${ Id.VSub_Name HANDLE_COMPFILE))})
                            (C {(echo)} {(SQ )})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:HANDLE_COMPFILE)
                                  op: assign_op.Equal
                                  rhs: {(DQ ('NOT V'))}
                                  spids: [1623]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Continue val:continue span_id:1629)
                            )
                          ]
                          spids: [1599 1600 1632 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {(unset)} {(NO_INSTALLED)})
            (C {(echo)} {(SQ )})
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name VERBOSE))}
              arms: [
                (case_arm pat_list:[{(SQ )}] spids:[1666 1668 1670 -1])
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [(C {(sleep)} {(3)})]
                  spids: [1673 1674 1682 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: press_to_continue
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(DISCARD)})
            (C {(echo)} {(-n)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: ' *** Press the [Enter] or [Return] key to continue '
                    span_id: 1708
                  )
                )
              }
            )
            (C {(read)} {(DISCARD)})
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TEMPROOT)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:/var/tmp/temproot span_id:1727))}
          spids: [1725]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Id.Lit_LBracket '[')} {(-r)} {(/etc/mergemaster.rc)} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:1746)
            )
          ]
          action: [(C {(.)} {(/etc/mergemaster.rc)})]
          spids: [1737 1748]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-r)} {(DQ ($ Id.VSub_DollarName '$HOME') (/.mergemasterrc))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:1776)
            )
          ]
          action: [(C {(.)} {(DQ ($ Id.VSub_DollarName '$HOME') (/.mergemasterrc))})]
          spids: [1764 1778]
        )
      ]
    )
    (command.ForEach
      iter_name: var
      iter_words: [{(DQ ($ Id.VSub_At '$@'))}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$var'))}
              arms: [
                (case_arm
                  pat_list: [{(--run-updates) (Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RUN_UPDATES)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:1821)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} 
                                            {
                                              (braced_var_sub
                                                token: (Token id:Id.VSub_Name val:var span_id:1827)
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op_id: Id.VOp1_Pound
                                                    arg_word: {('--run-updates=')}
                                                  )
                                              )
                                            }
                                          )
                                          (C {(tr)} 
                                            {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (upper) 
                                              (Id.Lit_Other ':') (Id.Lit_RBracket ']')
                                            } {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (lower) (Id.Lit_Other ':') (Id.Lit_RBracket ']')}
                                          )
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [1820]
                        )
                      ]
                    )
                  ]
                  spids: [1815 1817 1850 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:newopts)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$newopts') (' ') ($ Id.VSub_DollarName '$var'))
                            }
                          spids: [1857]
                        )
                      ]
                    )
                  ]
                  spids: [1853 1854 1865 -1]
                )
              ]
            )
          ]
        )
    )
    (C {(Id.KW_Set set)} {(--)} {($ Id.VSub_DollarName '$newopts')})
    (C {(unset)} {(Id.KW_Var var)} {(newopts)})
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:1892)
      cond: [
        (command.Sentence
          child: (C {(getopts)} {(DQ (':ascrvhipCPm:t:du:w:D:A:FU'))} {(COMMAND_LINE_ARGUMENT)})
          terminator: (Token id:Id.Op_Semi val:';' span_id:1902)
        )
      ]
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name COMMAND_LINE_ARGUMENT))}
              arms: [
                (case_arm
                  pat_list: [{(A)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ARCHSTRING)
                          op: assign_op.Equal
                          rhs: 
                            {(SQ (Token id:Id.Lit_Chars val:'TARGET_ARCH=' span_id:1924)) 
                              (${ Id.VSub_Name OPTARG)
                            }
                          spids: [1922]
                        )
                      ]
                    )
                  ]
                  spids: [1918 1919 1931 -1]
                )
                (case_arm
                  pat_list: [{(F)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:FREEBSD_ID)
                          op: assign_op.Equal
                          rhs: {(yes)}
                          spids: [1938]
                        )
                      ]
                    )
                  ]
                  spids: [1934 1935 1942 -1]
                )
                (case_arm
                  pat_list: [{(U)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:AUTO_UPGRADE)
                          op: assign_op.Equal
                          rhs: {(yes)}
                          spids: [1949]
                        )
                      ]
                    )
                  ]
                  spids: [1945 1946 1953 -1]
                )
                (case_arm
                  pat_list: [{(s)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:STRICT)
                          op: assign_op.Equal
                          rhs: {(yes)}
                          spids: [1960]
                        )
                      ]
                    )
                    (C {(unset)} {(DIFF_OPTIONS)})
                  ]
                  spids: [1956 1957 1969 -1]
                )
                (case_arm
                  pat_list: [{(c)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DIFF_FLAG)
                          op: assign_op.Equal
                          rhs: {(SQ (Token id:Id.Lit_Chars val:-c span_id:1978))}
                          spids: [1976]
                        )
                      ]
                    )
                  ]
                  spids: [1972 1973 1982 -1]
                )
                (case_arm
                  pat_list: [{(r)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:RERUN)
                          op: assign_op.Equal
                          rhs: {(yes)}
                          spids: [1989]
                        )
                      ]
                    )
                  ]
                  spids: [1985 1986 1993 -1]
                )
                (case_arm
                  pat_list: [{(v)}]
                  action: [
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ )}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:VERBOSE)
                                  op: assign_op.Equal
                                  rhs: {(yes)}
                                  spids: [2015]
                                )
                              ]
                            )
                          ]
                          spids: [2011 2013 2018 -1]
                        )
                      ]
                    )
                  ]
                  spids: [1996 1997 2024 -1]
                )
                (case_arm
                  pat_list: [{(a)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:AUTO_RUN)
                          op: assign_op.Equal
                          rhs: {(yes)}
                          spids: [2031]
                        )
                      ]
                    )
                    (C {(unset)} {(VERBOSE)})
                  ]
                  spids: [2027 2028 2040 -1]
                )
                (case_arm
                  pat_list: [{(h)}]
                  action: [
                    (C {(display_usage)})
                    (C {(display_help)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:2053)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [2043 2044 2058 -1]
                )
                (case_arm
                  pat_list: [{(i)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:AUTO_INSTALL)
                          op: assign_op.Equal
                          rhs: {(yes)}
                          spids: [2065]
                        )
                      ]
                    )
                  ]
                  spids: [2061 2062 2069 -1]
                )
                (case_arm
                  pat_list: [{(C)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:COMP_CONFS)
                          op: assign_op.Equal
                          rhs: {(yes)}
                          spids: [2076]
                        )
                      ]
                    )
                  ]
                  spids: [2072 2073 2080 -1]
                )
                (case_arm
                  pat_list: [{(P)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PRESERVE_FILES)
                          op: assign_op.Equal
                          rhs: {(yes)}
                          spids: [2087]
                        )
                      ]
                    )
                  ]
                  spids: [2083 2084 2091 -1]
                )
                (case_arm
                  pat_list: [{(p)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PRE_WORLD)
                          op: assign_op.Equal
                          rhs: {(yes)}
                          spids: [2098]
                        )
                      ]
                    )
                    (C {(unset)} {(COMP_CONFS)})
                    (C {(unset)} {(AUTO_RUN)})
                  ]
                  spids: [2094 2095 2112 -1]
                )
                (case_arm
                  pat_list: [{(m)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SOURCEDIR)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name OPTARG)}
                          spids: [2119]
                        )
                      ]
                    )
                  ]
                  spids: [2115 2116 2125 -1]
                )
                (case_arm
                  pat_list: [{(t)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:TEMPROOT)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name OPTARG)}
                          spids: [2132]
                        )
                      ]
                    )
                  ]
                  spids: [2128 2129 2138 -1]
                )
                (case_arm
                  pat_list: [{(d)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:TEMPROOT)
                          op: assign_op.Equal
                          rhs: 
                            {(${ Id.VSub_Name TEMPROOT) (.) 
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:2150)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(date)} 
                                        {(Id.Lit_Other '+') (Id.Lit_Other '%') (m) (Id.Lit_Other '%') 
                                          (d.) (Id.Lit_Other '%') (H.) (Id.Lit_Other '%') (M)
                                        }
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [2145]
                        )
                      ]
                    )
                  ]
                  spids: [2141 2142 2167 -1]
                )
                (case_arm
                  pat_list: [{(u)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:NEW_UMASK)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name OPTARG)}
                          spids: [2174]
                        )
                      ]
                    )
                  ]
                  spids: [2170 2171 2180 -1]
                )
                (case_arm
                  pat_list: [{(w)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:SCREEN_WIDTH)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name OPTARG)}
                          spids: [2187]
                        )
                      ]
                    )
                  ]
                  spids: [2183 2184 2193 -1]
                )
                (case_arm
                  pat_list: [{(D)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DESTDIR)
                          op: assign_op.Equal
                          rhs: {(${ Id.VSub_Name OPTARG)}
                          spids: [2200]
                        )
                      ]
                    )
                  ]
                  spids: [2196 2197 2206 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(display_usage)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:2216)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [2209 2210 2221 -1]
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$AUTO_RUN'))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:2240)
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$FREEBSD_ID'))} 
                          {(-o)} {(-n)} {(DQ ($ Id.VSub_DollarName '$AUTO_UPGRADE'))} {(-o)} {(-n)} 
                          {(DQ ($ Id.VSub_DollarName '$AUTO_INSTALL'))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2272)
                    )
                  ]
                  action: [
                    (C {(echo)} {(SQ )})
                    (C {(echo)} 
                      {(DQ ('*** You have included the -a option along with one or more options'))}
                    )
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: 
'    that indicate that you wish mergemaster to actually make updates'
                            span_id: 2293
                          )
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: '    (-F, -U, or -i), however these options are not compatible.'
                            span_id: 2300
                          )
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: '    Please read mergemaster(8) for more information.'
                            span_id: 2307
                          )
                        )
                      }
                    )
                    (C {(echo)} {(SQ )})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:2317)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [2245 2274]
                )
              ]
            )
          ]
          spids: [2229 2242]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MTREEDB)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:MTREEDB span_id:2335)
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_ColonHyphen
                    arg_word: {(${ Id.VSub_Name DESTDIR) (Id.Lit_Slash /) (var) (Id.Lit_Slash /) (db)}
                  )
              )
            }
          spids: [2333]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MTREEFILE)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Name MTREEDB) (/mergemaster.mtree))}
          spids: [2346]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name PRESERVE_FILES))} {(-a)} {(-z)} 
                  {(DQ (${ Id.VSub_Name PRESERVE_FILES_DIR))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:2381)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PRESERVE_FILES_DIR)
                  op: assign_op.Equal
                  rhs: 
                    {(/var/tmp/mergemaster/preserved-files-) 
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:2388)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(date)} 
                                {(Id.Lit_Other '+') (Id.Lit_Other '%') (y) (Id.Lit_Other '%') (m) 
                                  (Id.Lit_Other '%') (d-) (Id.Lit_Other '%') (H) (Id.Lit_Other '%') (M) (Id.Lit_Other '%') (S)
                                }
                              )
                            ]
                          )
                      )
                    }
                  spids: [2386]
                )
              ]
            )
            (C {(mkdir)} {(-p)} {(${ Id.VSub_Name PRESERVE_FILES_DIR)})
          ]
          spids: [2358 2383]
        )
      ]
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name AUTO_UPGRADE))}
      arms: [
        (case_arm pat_list:[{(SQ )}] spids:[2433 2435 2437 -1])
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-s)} 
                          {(DQ (${ Id.VSub_Name MTREEFILE))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2461)
                    )
                  ]
                  action: [
                    (C {(echo)} {(SQ )})
                    (C {(echo)} 
                      {
                        (DQ ('*** Unable to find mtree database (') (${ Id.VSub_Name MTREEFILE) (').'))
                      }
                    )
                    (C {(echo)} {(DQ ('    Skipping auto-upgrade on this run.'))})
                    (C {(echo)} 
                      {(DQ ('    It will be created for the next run when this one is complete.'))}
                    )
                    (C {(echo)} {(SQ )})
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ )}]
                          action: [(C {(press_to_continue)})]
                          spids: [2514 2516 2522 -1]
                        )
                      ]
                    )
                    (C {(unset)} {(AUTO_UPGRADE)})
                  ]
                  spids: [2446 2463]
                )
              ]
            )
          ]
          spids: [2442 2443 2536 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-e)} {(DQ (${ Id.VSub_Name DESTDIR) (/etc/fstab))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:2555)
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(grep)} {(-q)} {(nodev)} {(${ Id.VSub_Name DESTDIR) (/etc/fstab)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2572)
                    )
                  ]
                  action: [
                    (C {(echo)} {(SQ )})
                    (C {(echo)} 
                      {
                        (DQ ("*** You have the deprecated 'nodev' option in ") 
                          (${ Id.VSub_Name DESTDIR) (/etc/fstab.)
                        )
                      }
                    )
                    (C {(echo)} 
                      {(DQ ('    This can prevent the filesystem from being mounted on reboot.'))}
                    )
                    (C {(echo)} {(DQ ('    Please update your fstab before continuing.'))})
                    (C {(echo)} {(DQ ('    See fstab(5) for more information.'))})
                    (C {(echo)} {(SQ )})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:2621)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [2560 2574]
                )
              ]
            )
          ]
          spids: [2541 2557]
        )
      ]
    )
    (C {(echo)} {(SQ )})
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name DONT_CHECK_PAGER))}
      arms: [
        (case_arm
          pat_list: [{(SQ )}]
          action: [
            (command.ShFunction
              name: check_pager
              body: 
                (command.BraceGroup
                  children: [
                    (command.WhileUntil
                      keyword: (Token id:Id.KW_While val:while span_id:2665)
                      cond: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  words: [
                                    {(type)}
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:PAGER span_id:2673)
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VOp1_DPercent
                                              arg_word: {(' *')}
                                            )
                                        )
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: (Token id:Id.Redir_Great val:'>' span_id:2679)
                                      fd: -1
                                      arg_word: {(/dev/null)}
                                    )
                                  ]
                                )
                              ]
                              negated: T
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:2681)
                        )
                      ]
                      body: 
                        (command.DoGroup
                          children: [
                            (C {(echo)} 
                              {
                                (DQ (" *** Your PAGER environment variable specifies '") 
                                  (${ Id.VSub_Name PAGER) ("', but")
                                )
                              }
                            )
                            (C {(echo)} 
                              {(DQ ('     due to the limited PATH that I use for security reasons,'))}
                            )
                            (C {(echo)} 
                              {(DQ ('     I cannot execute it.  So, what would you like to do?'))}
                            )
                            (C {(echo)} {(SQ )})
                            (C {(echo)} 
                              {(DQ ("  Use 'e' to exit mergemaster and fix your PAGER variable"))}
                            )
                            (C {(echo)} {(DQ ("  Use 'l' to set PAGER to 'less' for this run"))})
                            (C {(echo)} 
                              {(DQ ("  Use 'm' to use plain old 'more' as your PAGER for this run"))}
                            )
                            (C {(echo)} {(SQ )})
                            (C {(echo)} 
                              {(DQ ('  or you may type an absolute path to PAGER for this run'))}
                            )
                            (C {(echo)} {(SQ )})
                            (C {(echo)} {(DQ ("  Default is to use plain old 'more' "))})
                            (C {(echo)} {(SQ )})
                            (C {(echo)} {(-n)} {(DQ ("What should I do? [Use 'more'] "))})
                            (C {(read)} {(FIXPAGER)})
                            (command.Case
                              to_match: {(DQ (${ Id.VSub_Name FIXPAGER))}
                              arms: [
                                (case_arm
                                  pat_list: [{(Id.Lit_LBracket '[') (eE) (Id.Lit_RBracket ']')}]
                                  action: [
                                    (command.ControlFlow
                                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:2802)
                                      arg_word: {(0)}
                                    )
                                  ]
                                  spids: [2796 2799 2807 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_LBracket '[') (lL) (Id.Lit_RBracket ']')}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:PAGER)
                                          op: assign_op.Equal
                                          rhs: {(less)}
                                          spids: [2816]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [2810 2813 2820 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_LBracket '[') (mM) (Id.Lit_RBracket ']')} {(SQ )}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:PAGER)
                                          op: assign_op.Equal
                                          rhs: {(more)}
                                          spids: [2832]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [2823 2829 2836 -1]
                                )
                                (case_arm
                                  pat_list: [{(/) (Id.Lit_Star '*')}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:PAGER)
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName '$FIXPAGER'))}
                                          spids: [2844]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [2839 2841 2850 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_Star '*')}]
                                  action: [
                                    (C {(echo)} {(SQ )})
                                    (C {(echo)} {(DQ ('invalid choice: ') (${ Id.VSub_Name FIXPAGER))})
                                  ]
                                  spids: [2853 2854 -1 2873]
                                )
                              ]
                            )
                            (C {(echo)} {(SQ )})
                          ]
                        )
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name PAGER))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2900)
                    )
                  ]
                  action: [(C {(check_pager)})]
                  spids: [2887 2902]
                )
              ]
            )
          ]
          spids: [2653 2655 2911 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PAGER)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:PAGER span_id:2927)
                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(more)})
              )
            }
          spids: [2925]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name VERBOSE))} {(-a)} 
                  {(Id.KW_Bang '!')} {(DQ (${ Id.VSub_Name PAGER))} {(Id.Lit_Equals '=')} {(DQ (more))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:2962)
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ (' *** You have ') (${ Id.VSub_Name PAGER) 
                  (' defined as your pager so we will use that')
                )
              }
            )
            (C {(echo)} {(SQ )})
            (C {(sleep)} {(3)})
          ]
          spids: [2933 2964]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DIFF_FLAG)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:DIFF_FLAG span_id:2999)
                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(-u)})
              )
            }
          spids: [2997]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SOURCEDIR)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:SOURCEDIR span_id:3013)
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_ColonHyphen
                    arg_word: {(Id.Lit_Slash /) (usr) (Id.Lit_Slash /) (src)}
                  )
              )
            }
          spids: [3011]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} 
                  {(${ Id.VSub_Name SOURCEDIR) (/Makefile.inc1)} {(-a)} {(-f)} {(${ Id.VSub_Name SOURCEDIR) (/../Makefile.inc1)} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:3046)
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ (' *** The source directory you specified (') (${ Id.VSub_Name SOURCEDIR) (')'))}
            )
            (C {(echo)} {(DQ ('     will be reset to ') (${ Id.VSub_Name SOURCEDIR) (/..))})
            (C {(echo)} {(SQ )})
            (C {(sleep)} {(3)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SOURCEDIR)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Name SOURCEDIR) (/..)}
                  spids: [3084]
                )
              ]
            )
          ]
          spids: [3021 3048]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SOURCEDIR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3093)
                command_list: 
                  (command.CommandList
                    children: [(C {(realpath)} {(DQ ($ Id.VSub_DollarName '$SOURCEDIR'))})]
                  )
              )
            }
          spids: [3092]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MM_MAKE)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ('make ') (${ Id.VSub_Name ARCHSTRING) (' -m ') (${ Id.VSub_Name SOURCEDIR) 
                ('/share/mk -DNO_FILEMON')
              )
            }
          spids: [3105]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name AUTO_UPGRADE))} {(-a)} {(-s)} 
                  {(DQ (${ Id.VSub_Name MTREEFILE))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:3151)
            )
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          words: [{(mtree)} {(-F)} {(freebsd9)} {(-c)} {(-p)} {(/var/empty/)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:3174)
                              fd: -1
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:3178)
                              fd: 2
                              arg_word: {(1)}
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3180)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MTREE_FLAVOR)
                          op: assign_op.Equal
                          rhs: {(DQ ('-F freebsd9'))}
                          spids: [3185]
                        )
                      ]
                    )
                  ]
                  spids: [3160 3182]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:MTREE_FLAVOR)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [3194]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:CHANGED)
                  op: assign_op.Equal
                  rhs: {(Id.Lit_Other ':')}
                  spids: [3200]
                )
              ]
            )
            (command.ForEach
              iter_name: file
              iter_words: [
                {
                  (command_sub
                    left_token: (Token id:Id.Left_Backtick val:'`' span_id:3210)
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Pipeline
                            children: [
                              (command.Simple
                                words: [
                                  {(mtree)}
                                  {(-eqL)}
                                  {(${ Id.VSub_Name MTREE_FLAVOR)}
                                  {(-f)}
                                  {(${ Id.VSub_Name MTREEFILE)}
                                  {(-p)}
                                  {(${ Id.VSub_Name DESTDIR) (/)}
                                ]
                                redirects: [
                                  (redir.Redir
                                    op: (Token id:Id.Redir_Great val:'2>' span_id:3239)
                                    fd: 2
                                    arg_word: {(/dev/null)}
                                  )
                                ]
                              )
                              (C {(awk)} 
                                {
                                  (SQ 
                                    (Token
                                      id: Id.Lit_Chars
                                      val: '($2 == "changed") {print $1}'
                                      span_id: 3247
                                    )
                                  )
                                }
                              )
                            ]
                            negated: F
                          )
                        ]
                      )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(-f)} 
                                  {(DQ (${ Id.VSub_Name DESTDIR) (/) ($ Id.VSub_DollarName '$file'))} {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:3270)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:CHANGED)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ (${ Id.VSub_Name CHANGED) (${ Id.VSub_Name DESTDIR) (/) 
                                        (${ Id.VSub_Name file) (':')
                                      )
                                    }
                                  spids: [3275]
                                )
                              ]
                            )
                          ]
                          spids: [3255 3272]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$CHANGED'))} 
                  {(Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:':' span_id:3306))} {(Id.Lit_RBracket ']')}
                )
                (C {(unset)} {(CHANGED)})
              ]
            )
          ]
          spids: [3128 3153]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Id.Lit_LBracket '[')} {(-t)} {(0)} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:3335)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:w)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:3341)
                        command_list: (command.CommandList children:[(C {(tput)} {(columns)})])
                      )
                    }
                  spids: [3340]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name w))}
              arms: [
                (case_arm pat_list:[{(0)} {(SQ )}] spids:[3361 3365 3367 -1])
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name SCREEN_WIDTH))}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ )}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:SCREEN_WIDTH)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name w))}
                                  spids: [3392]
                                )
                              ]
                            )
                          ]
                          spids: [3388 3390 3399 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ (${ Id.VSub_Name w))}]
                          spids: [3402 3407 3409 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (C {(echo)} {(-n)} 
                              {
                                (DQ ('*** You entered ') (${ Id.VSub_Name SCREEN_WIDTH) 
                                  (' as your screen width, but stty ')
                                )
                              }
                            )
                            (C {(echo)} {(DQ ('thinks it is ') (${ Id.VSub_Name w) (.))})
                            (C {(echo)} {(SQ )})
                            (C {(echo)} {(-n)} 
                              {(DQ ('What would you like to use? [') (${ Id.VSub_Name w) ('] '))}
                            )
                            (C {(read)} {(SCREEN_WIDTH)})
                            (command.Case
                              to_match: {(DQ (${ Id.VSub_Name SCREEN_WIDTH))}
                              arms: [
                                (case_arm
                                  pat_list: [{(SQ )}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:SCREEN_WIDTH)
                                          op: assign_op.Equal
                                          rhs: {(DQ (${ Id.VSub_Name w))}
                                          spids: [3482]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [3478 3480 3489 -1]
                                )
                              ]
                            )
                          ]
                          spids: [3415 3416 3495 -1]
                        )
                      ]
                    )
                  ]
                  spids: [3373 3374 -1 3501]
                )
              ]
            )
          ]
          spids: [3326 3337]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ID_TAG)
          op: assign_op.Equal
          rhs: {(FreeBSD)}
          spids: [3512]
        )
      ]
    )
    (command.ShFunction
      name: delete_temproot
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(rm)} {(-rf)} {(DQ (${ Id.VSub_Name TEMPROOT))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'2>' span_id:3534)
                  fd: 2
                  arg_word: {(/dev/null)}
                )
              ]
            )
            (command.Simple
              words: [{(chflags)} {(-R)} {(0)} {(DQ (${ Id.VSub_Name TEMPROOT))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'2>' span_id:3550)
                  fd: 2
                  arg_word: {(/dev/null)}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(rm)} {(-rf)} {(DQ (${ Id.VSub_Name TEMPROOT))})
                (command.BraceGroup
                  children: [
                    (command.Sentence
                      child: (C {(echo)} {(DQ ('*** Unable to delete ') (${ Id.VSub_Name TEMPROOT))})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3576)
                    )
                    (command.Sentence
                      child: 
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Exit val:exit span_id:3578)
                          arg_word: {(1)}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3581)
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name RERUN))}
      arms: [
        (case_arm
          pat_list: [{(SQ )}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TEST_TEMP_ROOT)
                  op: assign_op.Equal
                  rhs: {(yes)}
                  spids: [3615]
                )
              ]
            )
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:3619)
              cond: [
                (command.Sentence
                  child: 
                    (C {(Id.Lit_LBracket '[')} {(DQ (${ Id.VSub_Name TEST_TEMP_ROOT))} 
                      {(Id.Lit_Equals '=')} {(DQ (yes))} {(Id.Lit_RBracket ']')}
                    )
                  terminator: (Token id:Id.Op_Semi val:';' span_id:3636)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(-d)} {(DQ (${ Id.VSub_Name TEMPROOT))} 
                                  {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:3654)
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ 
                                  (
'*** The directory specified for the temporary root environment,'
                                  )
                                )
                              }
                            )
                            (C {(echo)} 
                              {
                                (DQ ('    ') (${ Id.VSub_Name TEMPROOT) 
                                  (', exists.  This can be a security risk if untrusted')
                                )
                              }
                            )
                            (C {(echo)} {(DQ ('    users have access to the system.'))})
                            (C {(echo)} {(SQ )})
                            (command.Case
                              to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))}
                              arms: [
                                (case_arm
                                  pat_list: [{(SQ )}]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ ("  Use 'd' to delete the old ") 
                                          (${ Id.VSub_Name TEMPROOT) (' and continue')
                                        )
                                      }
                                    )
                                    (C {(echo)} 
                                      {(DQ ("  Use 't' to select a new temporary root directory"))}
                                    )
                                    (C {(echo)} {(DQ ("  Use 'e' to exit mergemaster"))})
                                    (C {(echo)} {(SQ )})
                                    (C {(echo)} 
                                      {
                                        (DQ ('  Default is to use ') (${ Id.VSub_Name TEMPROOT) 
                                          (' as is')
                                        )
                                      }
                                    )
                                    (C {(echo)} {(SQ )})
                                    (C {(echo)} {(-n)} 
                                      {
                                        (DQ ('How should I deal with this? [Use the existing ') 
                                          (${ Id.VSub_Name TEMPROOT) ('] ')
                                        )
                                      }
                                    )
                                    (C {(read)} {(DELORNOT)})
                                    (command.Case
                                      to_match: {(DQ (${ Id.VSub_Name DELORNOT))}
                                      arms: [
                                        (case_arm
                                          pat_list: [
                                            {(Id.Lit_LBracket '[') (dD) (Id.Lit_RBracket ']')}
                                          ]
                                          action: [
                                            (C {(echo)} {(SQ )})
                                            (C {(echo)} 
                                              {
                                                (DQ ('   *** Deleting the old ') 
                                                  (${ Id.VSub_Name TEMPROOT)
                                                )
                                              }
                                            )
                                            (C {(echo)} {(SQ )})
                                            (C {(delete_temproot)})
                                            (C {(unset)} {(TEST_TEMP_ROOT)})
                                          ]
                                          spids: [3784 3787 3820 -1]
                                        )
                                        (case_arm
                                          pat_list: [
                                            {(Id.Lit_LBracket '[') (tT) (Id.Lit_RBracket ']')}
                                          ]
                                          action: [
                                            (C {(echo)} 
                                              {
                                                (DQ 
                                                  (
'   *** Enter new directory name for temporary root environment'
                                                  )
                                                )
                                              }
                                            )
                                            (C {(read)} {(TEMPROOT)})
                                          ]
                                          spids: [3823 3826 3841 -1]
                                        )
                                        (case_arm
                                          pat_list: [
                                            {(Id.Lit_LBracket '[') (eE) (Id.Lit_RBracket ']')}
                                          ]
                                          action: [
                                            (command.ControlFlow
                                              token: 
                                                (Token
                                                  id: Id.ControlFlow_Exit
                                                  val: exit
                                                  span_id: 3850
                                                )
                                              arg_word: {(0)}
                                            )
                                          ]
                                          spids: [3844 3847 3855 -1]
                                        )
                                        (case_arm
                                          pat_list: [{(SQ )}]
                                          action: [
                                            (C {(echo)} {(SQ )})
                                            (C {(echo)} 
                                              {
                                                (DQ ('   *** Leaving ') (${ Id.VSub_Name TEMPROOT) 
                                                  (' intact')
                                                )
                                              }
                                            )
                                            (C {(echo)} {(SQ )})
                                            (C {(unset)} {(TEST_TEMP_ROOT)})
                                          ]
                                          spids: [3858 3860 3891 -1]
                                        )
                                        (case_arm
                                          pat_list: [{(Id.Lit_Star '*')}]
                                          action: [
                                            (C {(echo)} {(SQ )})
                                            (C {(echo)} 
                                              {(DQ ('invalid choice: ') (${ Id.VSub_Name DELORNOT))}
                                            )
                                            (C {(echo)} {(SQ )})
                                          ]
                                          spids: [3894 3895 3920 -1]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [3701 3703 3926 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_Star '*')}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:TEMPROOT)
                                          op: assign_op.Equal
                                          rhs: 
                                            {(/var/tmp/temproot.) 
                                              (command_sub
                                                left_token: 
                                                  (Token
                                                    id: Id.Left_Backtick
                                                    val: '`'
                                                    span_id: 3943
                                                  )
                                                command_list: 
                                                  (command.CommandList
                                                    children: [
                                                      (C {(date)} 
                                                        {(Id.Lit_Other '+') (Id.Lit_Other '%') (m) 
                                                          (Id.Lit_Other '%') (d.) (Id.Lit_Other '%') (H.) (Id.Lit_Other '%') (M.) (Id.Lit_Other '%') (S)
                                                        }
                                                      )
                                                    ]
                                                  )
                                              )
                                            }
                                          spids: [3941]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [3929 3930 3962 -1]
                                )
                              ]
                            )
                          ]
                          spids: [3641 3656]
                        )
                      ]
                      else_action: [(C {(unset)} {(TEST_TEMP_ROOT)})]
                    )
                  ]
                )
            )
            (C {(echo)} 
              {(DQ ('*** Creating the temporary root environment in ') (${ Id.VSub_Name TEMPROOT))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(mkdir)} {(-p)} {(DQ (${ Id.VSub_Name TEMPROOT))})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4005)
                    )
                  ]
                  action: [(C {(echo)} {(DQ (' *** ') (${ Id.VSub_Name TEMPROOT) (' ready for use'))})]
                  spids: [3994 4007]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-d)} 
                          {(DQ (${ Id.VSub_Name TEMPROOT))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:4040)
                    )
                  ]
                  action: [
                    (C {(echo)} {(SQ )})
                    (C {(echo)} {(DQ ('  *** FATAL ERROR: Cannot create ') (${ Id.VSub_Name TEMPROOT))})
                    (C {(echo)} {(SQ )})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:4067)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [4025 4042]
                )
              ]
            )
            (C {(echo)} 
              {
                (DQ (' *** Creating and populating directory structure in ') 
                  (${ Id.VSub_Name TEMPROOT)
                )
              }
            )
            (C {(echo)} {(SQ )})
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name VERBOSE))}
              arms: [
                (case_arm pat_list:[{(SQ )}] spids:[4104 4106 4108 -1])
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [(C {(press_to_continue)})]
                  spids: [4111 4112 4118 -1]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name PRE_WORLD))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.BraceGroup
                          children: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(cd)} {(${ Id.VSub_Name SOURCEDIR)})
                                (command.Case
                                  to_match: {(DQ (${ Id.VSub_Name DESTDIR))}
                                  arms: [
                                    (case_arm
                                      pat_list: [{(SQ )}]
                                      spids: [4163 4165 4167 -1]
                                    )
                                    (case_arm
                                      pat_list: [{(Id.Lit_Star '*')}]
                                      action: [
                                        (command.Simple
                                          words: [
                                            {(${ Id.VSub_Name MM_MAKE)}
                                            {(Id.Lit_VarLike 'DESTDIR=') (${ Id.VSub_Name DESTDIR)}
                                            {(distrib-dirs)}
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'>' span_id:4185)
                                              fd: -1
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [4170 4171 4189 -1]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
                                  children: [
                                    (command.Simple
                                      words: [
                                        {(${ Id.VSub_Name MM_MAKE)}
                                        {(Id.Lit_VarLike 'DESTDIR=') (${ Id.VSub_Name TEMPROOT)}
                                        {(distrib-dirs)}
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_Great val:'>' span_id:4206)
                                          fd: -1
                                          arg_word: {(/dev/null)}
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [
                                        {(${ Id.VSub_Name MM_MAKE)}
                                        {(_obj)}
                                        {(Id.Lit_VarLike 'SUBDIR_OVERRIDE=') (etc)}
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_Great val:'>' span_id:4221)
                                          fd: -1
                                          arg_word: {(/dev/null)}
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [
                                        {(${ Id.VSub_Name MM_MAKE)}
                                        {(everything)}
                                        {(Id.Lit_VarLike 'SUBDIR_OVERRIDE=') (etc)}
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_Great val:'>' span_id:4236)
                                          fd: -1
                                          arg_word: {(/dev/null)}
                                        )
                                      ]
                                    )
                                    (command.Simple
                                      words: [
                                        {(${ Id.VSub_Name MM_MAKE)}
                                        {(Id.Lit_VarLike 'DESTDIR=') (${ Id.VSub_Name TEMPROOT)}
                                        {(distribution)}
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_Great val:'>' span_id:4253)
                                          fd: -1
                                          arg_word: {(/dev/null)}
                                        )
                                      ]
                                    )
                                  ]
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4255)
                            )
                          ]
                        )
                        (command.BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {(echo)} {(SQ )})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4267)
                            )
                            (command.Sentence
                              child: 
                                (C {(echo)} 
                                  {
                                    (DQ ("  *** FATAL ERROR: Cannot 'cd' to ") 
                                      (${ Id.VSub_Name SOURCEDIR) (' and install files to')
                                    )
                                  }
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4279)
                            )
                            (command.Sentence
                              child: (C {(echo)} {(DQ ('      the temproot environment'))})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4287)
                            )
                            (command.Sentence
                              child: (C {(echo)} {(SQ )})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4294)
                            )
                            (command.Sentence
                              child: 
                                (command.ControlFlow
                                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:4297)
                                  arg_word: {(1)}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4300)
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [4136 4138 4304 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.BraceGroup
                          children: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DAmp Id.Op_DAmp]
                                  children: [
                                    (C {(mkdir)} {(-p)} {(${ Id.VSub_Name TEMPROOT) (/etc)})
                                    (C {(cp)} {(-p)} {(${ Id.VSub_Name SOURCEDIR) (/etc/master.passwd)} 
                                      {(${ Id.VSub_Name TEMPROOT) (/etc)}
                                    )
                                    (C {(install)} {(-p)} {(-o)} {(root)} {(-g)} {(wheel)} {(-m)} {(0644)} 
                                      {(${ Id.VSub_Name SOURCEDIR) (/etc/group)} {(${ Id.VSub_Name TEMPROOT) (/etc)}
                                    )
                                  ]
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4371)
                            )
                          ]
                        )
                        (command.BraceGroup
                          children: [
                            (command.Sentence
                              child: (C {(echo)} {(SQ )})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4383)
                            )
                            (command.Sentence
                              child: 
                                (C {(echo)} 
                                  {
                                    (SQ 
                                      (Token
                                        id: Id.Lit_Chars
                                        val: 
'  *** FATAL ERROR: Cannot copy files to the temproot environment'
                                        span_id: 4389
                                      )
                                    )
                                  }
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4391)
                            )
                            (command.Sentence
                              child: (C {(echo)} {(SQ )})
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4398)
                            )
                            (command.Sentence
                              child: 
                                (command.ControlFlow
                                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:4401)
                                  arg_word: {(1)}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:4404)
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [4307 4308 4408 -1]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name VERBOSE))}
              arms: [
                (case_arm pat_list:[{(SQ )}] spids:[4438 4440 4442 -1])
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(echo)} {(SQ )})
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: ' *** The following files exist only in the installed version of'
                            span_id: 4458
                          )
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (DQ ('     ') (${ Id.VSub_Name DESTDIR) 
                          ('/etc.  In the vast majority of cases these files')
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: '     are necessary parts of the system and should not be deleted.'
                            span_id: 4476
                          )
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: 
'     However because these files are not updated by this process you'
                            span_id: 4483
                          )
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: 
'     might want to verify their status before rebooting your system.'
                            span_id: 4490
                          )
                        )
                      }
                    )
                    (C {(echo)} {(SQ )})
                    (C {(press_to_continue)})
                    (command.Pipeline
                      children: [
                        (C {(diff)} {(-qr)} {(${ Id.VSub_Name DESTDIR) (/etc)} 
                          {(${ Id.VSub_Name TEMPROOT) (/etc)}
                        )
                        (C {(grep)} {(DQ ('^Only in ') (${ Id.VSub_Name DESTDIR) (/etc))})
                        (C {(${ Id.VSub_Name PAGER)})
                      ]
                      negated: F
                    )
                    (C {(echo)} {(SQ )})
                    (C {(press_to_continue)})
                  ]
                  spids: [4445 4446 4545 -1]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name IGNORE_MOTD))}
              arms: [
                (case_arm pat_list:[{(SQ )}] spids:[4563 4565 4567 -1])
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(echo)} {(SQ )})
                    (C {(echo)} 
                      {(DQ ('*** You have the IGNORE_MOTD option set in your mergemaster rc file.'))}
                    )
                    (C {(echo)} 
                      {(DQ ('    This option is deprecated in favor of the IGNORE_FILES option.'))}
                    )
                    (C {(echo)} {(DQ ('    Please update your rc file accordingly.'))})
                    (C {(echo)} {(SQ )})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:4607)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [4570 4571 4612 -1]
                )
              ]
            )
            (command.ForEach
              iter_name: file
              iter_words: [{(${ Id.VSub_Name IGNORE_FILES)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {(test)} {(-e)} {(${ Id.VSub_Name TEMPROOT) (/) (${ Id.VSub_Name file)})
                        (C {(unlink)} {(${ Id.VSub_Name TEMPROOT) (/) (${ Id.VSub_Name file)})
                      ]
                    )
                  ]
                )
            )
            (C {(rm)} {(-f)} {(${ Id.VSub_Name TEMPROOT) (/etc/) (Id.Lit_Star '*') (.db)} 
              {(${ Id.VSub_Name TEMPROOT) (/etc/passwd)} {(${ Id.VSub_Name TEMPROOT) (/var/db/services.db)}
            )
            (command.Simple
              words: [{(find)} {(${ Id.VSub_Name TEMPROOT) (/usr/obj)} {(-type)} {(f)} {(-delete)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'2>' span_id:4724)
                  fd: 2
                  arg_word: {(/dev/null)}
                )
              ]
            )
            (command.Simple
              words: [{(find)} {(${ Id.VSub_Name TEMPROOT) (/usr)} {(-type)} {(l)} {(-delete)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'2>' span_id:4750)
                  fd: 2
                  arg_word: {(/dev/null)}
                )
              ]
            )
            (command.Simple
              words: [{(find)} {(${ Id.VSub_Name TEMPROOT)} {(-type)} {(f)} {(-size)} {(0)} {(-delete)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'2>' span_id:4770)
                  fd: 2
                  arg_word: {(/dev/null)}
                )
              ]
            )
            (command.Simple
              words: [
                {(find)}
                {(-d)}
                {(${ Id.VSub_Name TEMPROOT)}
                {(-type)}
                {(d)}
                {(-empty)}
                {(-mindepth)}
                {(1)}
                {(-delete)}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'2>' span_id:4794)
                  fd: 2
                  arg_word: {(/dev/null)}
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name PRE_WORLD))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MTREENEW)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:4819)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(mktemp)} {(-t)} {(mergemaster.mtree)})]
                                  )
                              )
                            }
                          spids: [4818]
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(mtree)}
                        {(-nci)}
                        {(-p)}
                        {(${ Id.VSub_Name TEMPROOT)}
                        {(-k)}
                        {(size) (Id.Lit_Comma ',') (md5digest)}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:4846)
                          fd: -1
                          arg_word: {(${ Id.VSub_Name MTREENEW)}
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'2>' span_id:4852)
                          fd: 2
                          arg_word: {(/dev/null)}
                        )
                      ]
                    )
                  ]
                  spids: [4814 4816 4856 -1]
                )
                (case_arm pat_list:[{(Id.Lit_Star '*')}] spids:[4859 4860 4870 -1])
              ]
            )
          ]
          spids: [3598 3600 4876 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ (${ Id.VSub_Name NEW_UMASK))} {(-a)} {(-z)} 
                  {(DQ (${ Id.VSub_Name AUTO_RUN))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:4920)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:USER_UMASK)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:4926)
                        command_list: (command.CommandList children:[(C {(umask)})])
                      )
                    }
                  spids: [4925]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name USER_UMASK))}
              arms: [
                (case_arm pat_list:[{(0022)} {(022)}] spids:[4944 4947 4949 -1])
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(echo)} {(SQ )})
                    (C {(echo)} 
                      {
                        (DQ (' *** Your umask is currently set to ') (${ Id.VSub_Name USER_UMASK) 
                          ('.  By default, this script')
                        )
                      }
                    )
                    (C {(echo)} 
                      {(DQ ('     installs all files with the same user, group and modes that'))}
                    )
                    (C {(echo)} 
                      {
                        (DQ ('     they are created with by ') (${ Id.VSub_Name SOURCEDIR) 
                          ('/etc/Makefile, compared to')
                        )
                      }
                    )
                    (C {(echo)} 
                      {(DQ ('     a umask of 022.  This umask allows world read permission when'))}
                    )
                    (C {(echo)} {(DQ ("     the file's default permissions have it."))})
                    (C {(echo)} {(SQ )})
                    (C {(echo)} 
                      {(DQ ('     No world permissions can sometimes cause problems.  A umask of'))}
                    )
                    (C {(echo)} 
                      {(DQ ('     022 will restore the default behavior, but is not mandatory.'))}
                    )
                    (C {(echo)} 
                      {(DQ ('     /etc/master.passwd is a special case.  Its file permissions'))}
                    )
                    (C {(echo)} {(DQ ('     will be 600 (rw-------) if installed.'))})
                    (C {(echo)} {(SQ )})
                    (C {(echo)} {(-n)} 
                      {(DQ ('What umask should I use? [') (${ Id.VSub_Name USER_UMASK) ('] '))}
                    )
                    (C {(read)} {(NEW_UMASK)})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:NEW_UMASK)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:NEW_UMASK span_id:5067)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VTest_ColonHyphen
                                      arg_word: {($ Id.VSub_DollarName '$USER_UMASK')}
                                    )
                                )
                              )
                            }
                          spids: [5064]
                        )
                      ]
                    )
                  ]
                  spids: [4952 4953 5074 -1]
                )
              ]
            )
            (C {(echo)} {(SQ )})
          ]
          spids: [4897 4922]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CONFIRMED_UMASK)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:NEW_UMASK span_id:5090)
                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(0022)})
              )
            }
          spids: [5088]
        )
      ]
    )
    (command.ForEach
      iter_name: file
      iter_words: [
        {(atm)}
        {(devfs)}
        {(diskless1)}
        {(diskless2)}
        {(network)}
        {(network6)}
        {(pccard)}
        {(serial)}
        {(syscons)}
        {(sysctl)}
        {(alpha)}
        {(amd64)}
        {(i386)}
        {(sparc64)}
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-f)} 
                          {(DQ (${ Id.VSub_Name DESTDIR) (/etc/rc.) (${ Id.VSub_Name file))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5162)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:OLD_RC_PRESENT)
                          op: assign_op.Equal
                          rhs: {(1)}
                          spids: [5167]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Break val:break span_id:5171)
                    )
                  ]
                  spids: [5145 5164]
                )
              ]
            )
          ]
        )
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name OLD_RC_PRESENT))}
      arms: [
        (case_arm
          pat_list: [{(1)}]
          action: [
            (C {(echo)} {(SQ )})
            (C {(echo)} 
              {
                (DQ (' *** There are elements of the old rc system in ') (${ Id.VSub_Name DESTDIR) 
                  (/etc/.)
                )
              }
            )
            (C {(echo)} {(SQ )})
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: '     While these scripts will not hurt anything, they are not'
                    span_id: 5219
                  )
                )
              }
            )
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: '     functional on an up to date system, and can be removed.'
                    span_id: 5226
                  )
                )
              }
            )
            (C {(echo)} {(SQ )})
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: 'Move these files to /var/tmp/mergemaster/old_rc? [yes] '
                            span_id: 5258
                          )
                        )
                      }
                    )
                    (C {(read)} {(MOVE_OLD_RC)})
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name MOVE_OLD_RC))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Id.Lit_LBracket '[') (nN) (Id.Lit_RBracket ']') (Id.Lit_Star '*')}
                          ]
                          spids: [5279 5283 5285 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (C {(mkdir)} {(-p)} {(/var/tmp/mergemaster/old_rc)})
                            (command.ForEach
                              iter_name: file
                              iter_words: [
                                {(atm)}
                                {(devfs)}
                                {(diskless1)}
                                {(diskless2)}
                                {(network)}
                                {(network6)}
                                {(pccard)}
                                {(serial)}
                                {(syscons)}
                                {(sysctl)}
                                {(alpha)}
                                {(amd64)}
                                {(i386)}
                                {(sparc64)}
                              ]
                              do_arg_iter: F
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(Id.Lit_LBracket '[')} {(-f)} 
                                                  {
                                                    (DQ (${ Id.VSub_Name DESTDIR) (/etc/rc.) 
                                                      (${ Id.VSub_Name file)
                                                    )
                                                  } {(Id.Lit_RBracket ']')}
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:5356)
                                            )
                                          ]
                                          action: [
                                            (C {(mv)} 
                                              {(${ Id.VSub_Name DESTDIR) (/etc/rc.) 
                                                (${ Id.VSub_Name file)
                                              } {(/var/tmp/mergemaster/old_rc/)}
                                            )
                                          ]
                                          spids: [5339 5358]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                            (C {(echo)} 
                              {
                                (SQ 
                                  (Token
                                    id: Id.Lit_Chars
                                    val: '  The files have been moved'
                                    span_id: 5383
                                  )
                                )
                              }
                            )
                            (C {(press_to_continue)})
                          ]
                          spids: [5288 5289 5390 -1]
                        )
                      ]
                    )
                  ]
                  spids: [5248 5250 5396 -1]
                )
                (case_arm pat_list:[{(Id.Lit_Star '*')}] spids:[5399 5400 5402 -1])
              ]
            )
          ]
          spids: [5189 5190 -1 5407]
        )
      ]
    )
    (command.ShFunction
      name: install_error
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} 
              {
                (DQ ('*** FATAL ERROR: Unable to install ') (${ Id.VSub_Number 1) (' to ') 
                  (${ Id.VSub_Number 2)
                )
              }
            )
            (C {(echo)} {(SQ )})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:5447)
              arg_word: {(1)}
            )
          ]
        )
    )
    (command.ShFunction
      name: do_install_and_rm
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name PRESERVE_FILES))}
              arms: [
                (case_arm
                  pat_list: [
                    {(Id.Lit_LBracket '[') (Yy) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Ee) 
                      (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Ss) (Id.Lit_RBracket ']')
                    }
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(-f)} 
                                  {
                                    (DQ (${ Id.VSub_Number 3) (/) 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Number val:2 span_id:5497)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VOp1_DPound
                                            arg_word: {('*') (Id.Lit_Slash /)}
                                          )
                                      )
                                    )
                                  } {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:5505)
                            )
                          ]
                          action: [
                            (C {(mkdir)} {(-p)} 
                              {(${ Id.VSub_Name PRESERVE_FILES_DIR) (/) 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Number val:2 span_id:5519)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VOp1_Percent
                                      arg_word: {(Id.Lit_Slash /) ('*')}
                                    )
                                )
                              }
                            )
                            (C {(cp)} 
                              {(${ Id.VSub_Number 3) (/) 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Number val:2 span_id:5533)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VOp1_DPound
                                      arg_word: {('*') (Id.Lit_Slash /)}
                                    )
                                )
                              } 
                              {(${ Id.VSub_Name PRESERVE_FILES_DIR) (/) 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Number val:2 span_id:5544)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VOp1_Percent
                                      arg_word: {(Id.Lit_Slash /) ('*')}
                                    )
                                )
                              }
                            )
                          ]
                          spids: [5485 5507]
                        )
                      ]
                    )
                  ]
                  spids: [5473 5482 5554 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-d)} 
                          {
                            (DQ (${ Id.VSub_Number 3) (/) 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Number val:2 span_id:5575)
                                suffix_op: 
                                  (suffix_op.Unary
                                    op_id: Id.VOp1_DPound
                                    arg_word: {('*') (Id.Lit_Slash /)}
                                  )
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5583)
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(install)} {(-m)} {(${ Id.VSub_Number 1)} {(${ Id.VSub_Number 2)} 
                                  {(${ Id.VSub_Number 3)}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:5605)
                            )
                          ]
                          action: [(C {(unlink)} {(${ Id.VSub_Number 2)})]
                          spids: [5588 5607]
                        )
                      ]
                      else_action: [
                        (C {(install_error)} {(${ Id.VSub_Number 2)} {(${ Id.VSub_Number 3)})
                      ]
                    )
                  ]
                  spids: [5561 5585]
                )
              ]
              else_action: [(C {(install_error)} {(${ Id.VSub_Number 2)} {(${ Id.VSub_Number 3)})]
            )
          ]
        )
    )
    (command.ShFunction
      name: find_mode
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(OCTAL)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:OCTAL)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Amp
                            left: 
                              (arith_expr.Binary
                                op_id: Id.Arith_Amp
                                left: 
                                  (arith_expr.Unary
                                    op_id: Id.Arith_Tilde
                                    child: 
                                      (arith_expr.ArithWord
                                        w: 
                                          {
                                            (command_sub
                                              left_token: 
                                                (Token
                                                  id: Id.Left_DollarParen
                                                  val: '$('
                                                  span_id: 5673
                                                )
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (command.Pipeline
                                                      children: [
                                                        (C {(echo)} 
                                                          {
                                                            (DQ ('obase=10; ibase=8; ') 
                                                              (${ Id.VSub_Name CONFIRMED_UMASK)
                                                            )
                                                          }
                                                        )
                                                        (C {(bc)})
                                                      ]
                                                      negated: F
                                                    )
                                                  ]
                                                )
                                            )
                                          }
                                      )
                                  )
                                right: (arith_expr.ArithWord w:{(Id.Lit_Digits 4095)})
                              )
                            right: 
                              (arith_expr.ArithWord
                                w: 
                                  {
                                    (command_sub
                                      left_token: 
                                        (Token
                                          id: Id.Left_DollarParen
                                          val: '$('
                                          span_id: 5695
                                        )
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (command.Pipeline
                                              children: [
                                                (C {(echo)} 
                                                  {
                                                    (DQ ('obase=10; ibase=8; ') 
                                                      (command_sub
                                                        left_token: 
                                                          (Token
                                                            id: Id.Left_DollarParen
                                                            val: '$('
                                                            span_id: 5700
                                                          )
                                                        command_list: 
                                                          (command.CommandList
                                                            children: [
                                                              (C {(stat)} {(-f)} {(DQ ('%OMp%OLp'))} 
                                                                {(${ Id.VSub_Number 1)}
                                                              )
                                                            ]
                                                          )
                                                      )
                                                    )
                                                  }
                                                )
                                                (C {(bc)})
                                              ]
                                              negated: F
                                            )
                                          ]
                                        )
                                    )
                                  }
                              )
                          )
                      )
                    }
                  spids: [5669]
                )
              ]
            )
            (C {(printf)} {(DQ ('%04o') (Id.Lit_Other '\\') (n))} {(${ Id.VSub_Name OCTAL)})
          ]
        )
    )
    (command.ShFunction
      name: mm_install
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(INSTALL_DIR)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:INSTALL_DIR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: (Token id:Id.VSub_Number val:1 span_id:5754)
                        suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)})
                      )
                    }
                  spids: [5752]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:INSTALL_DIR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:INSTALL_DIR span_id:5762)
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: Id.VOp1_Percent
                            arg_word: {(Id.Lit_Slash /) ('*')}
                          )
                      )
                    }
                  spids: [5760]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name INSTALL_DIR))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:INSTALL_DIR)
                          op: assign_op.Equal
                          rhs: {(/)}
                          spids: [5786]
                        )
                      ]
                    )
                  ]
                  spids: [5781 5783 5790 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                          {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))} {(-a)} {(Id.KW_Bang '!')} {(-d)} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5828)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:DIR_MODE)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:5834)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(find_mode)} 
                                        {
                                          (DQ (${ Id.VSub_Name TEMPROOT) (/) 
                                            (${ Id.VSub_Name INSTALL_DIR)
                                          )
                                        }
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [5833]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(install)} {(-d)} {(-o)} {(root)} {(-g)} {(wheel)} {(-m)} 
                          {(DQ (${ Id.VSub_Name DIR_MODE))} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))}
                        )
                        (C {(install_error)} {($ Id.VSub_Number '$1')} 
                          {(${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR)}
                        )
                      ]
                    )
                  ]
                  spids: [5797 5830]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FILE_MODE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:5900)
                        command_list: 
                          (command.CommandList
                            children: [(C {(find_mode)} {(DQ (${ Id.VSub_Number 1))})]
                          )
                      )
                    }
                  spids: [5899]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-x)} {(DQ (${ Id.VSub_Number 1))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:5929)
                    )
                  ]
                  action: [
                    (command.Case
                      to_match: 
                        {
                          (DQ 
                            (braced_var_sub
                              token: (Token id:Id.VSub_Number val:1 span_id:5938)
                              suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)})
                            )
                          )
                        }
                      arms: [
                        (case_arm
                          pat_list: [{(/etc/mail/aliases)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:NEED_NEWALIASES)
                                  op: assign_op.Equal
                                  rhs: {(yes)}
                                  spids: [5951]
                                )
                              ]
                            )
                          ]
                          spids: [5947 5948 5955 -1]
                        )
                        (case_arm
                          pat_list: [{(/etc/login.conf)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:NEED_CAP_MKDB)
                                  op: assign_op.Equal
                                  rhs: {(yes)}
                                  spids: [5962]
                                )
                              ]
                            )
                          ]
                          spids: [5958 5959 5966 -1]
                        )
                        (case_arm
                          pat_list: [{(/etc/services)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:NEED_SERVICES_MKDB)
                                  op: assign_op.Equal
                                  rhs: {(yes)}
                                  spids: [5973]
                                )
                              ]
                            )
                          ]
                          spids: [5969 5970 5977 -1]
                        )
                        (case_arm
                          pat_list: [{(/etc/master.passwd)}]
                          action: [
                            (C {(do_install_and_rm)} {(600)} {(DQ (${ Id.VSub_Number 1))} 
                              {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:NEED_PWD_MKDB)
                                  op: assign_op.Equal
                                  rhs: {(yes)}
                                  spids: [6004]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:DONT_INSTALL)
                                  op: assign_op.Equal
                                  rhs: {(yes)}
                                  spids: [6008]
                                )
                              ]
                            )
                          ]
                          spids: [5980 5981 6012 -1]
                        )
                        (case_arm
                          pat_list: [{(/.cshrc)} {(/.profile)}]
                          action: [
                            (C {(local)} {(st_nlink)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:st_nlink)
                                  op: assign_op.Equal
                                  rhs: {(0)}
                                  spids: [6041]
                                )
                              ]
                            )
                            (C {(eval)} 
                              {
                                (command_sub
                                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6050)
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Simple
                                          words: [
                                            {(stat)}
                                            {(-s)}
                                            {(${ Id.VSub_Name DESTDIR) 
                                              (braced_var_sub
                                                token: 
                                                  (Token
                                                    id: Id.VSub_Name
                                                    val: COMPFILE
                                                    span_id: 6059
                                                  )
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op_id: Id.VOp1_Pound
                                                    arg_word: {(.)}
                                                  )
                                              )
                                            }
                                          ]
                                          redirects: [
                                            (redir.Redir
                                              op: (Token id:Id.Redir_Great val:'2>' span_id:6064)
                                              fd: 2
                                              arg_word: {(/dev/null)}
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                )
                              }
                            )
                            (C {(do_install_and_rm)} {(DQ (${ Id.VSub_Name FILE_MODE))} 
                              {(DQ (${ Id.VSub_Number 1))} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))}
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                                          {(DQ (${ Id.VSub_Name AUTO_INSTALL))} {(-a)} {($ Id.VSub_DollarName '$st_nlink')} {(-gt)} {(1)} {(Id.Lit_RBracket ']')}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:6116)
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:HANDLE_LINK)
                                          op: assign_op.Equal
                                          rhs: {(l)}
                                          spids: [6121]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [6095 6118]
                                )
                              ]
                              else_action: [
                                (command.Case
                                  to_match: {(DQ (${ Id.VSub_Name LINK_EXPLAINED))}
                                  arms: [
                                    (case_arm
                                      pat_list: [{(SQ )}]
                                      action: [
                                        (C {(echo)} 
                                          {
                                            (DQ 
                                              ('   *** Historically BSD derived systems have had a')
                                            )
                                          }
                                        )
                                        (C {(echo)} 
                                          {(DQ ('       hard link from /.cshrc and /.profile to'))}
                                        )
                                        (C {(echo)} 
                                          {(DQ ('       their namesakes in /root.  Please indicate'))}
                                        )
                                        (C {(echo)} 
                                          {(DQ ('       your preference below for bringing your'))}
                                        )
                                        (C {(echo)} {(DQ ('       installed files up to date.'))})
                                        (C {(echo)} {(SQ )})
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:LINK_EXPLAINED)
                                              op: assign_op.Equal
                                              rhs: {(yes)}
                                              spids: [6185]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [6139 6141 6189 -1]
                                    )
                                  ]
                                )
                                (C {(echo)} 
                                  {
                                    (DQ ("   Use 'd' to delete the temporary ") 
                                      (${ Id.VSub_Name COMPFILE)
                                    )
                                  }
                                )
                                (C {(echo)} 
                                  {
                                    (DQ ("   Use 'l' to delete the existing ") 
                                      (${ Id.VSub_Name DESTDIR) (/root/) 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:COMPFILE span_id:6215)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VOp1_DPound
                                            arg_word: {('*') (Id.Lit_Slash /)}
                                          )
                                      ) (' and create the link')
                                    )
                                  }
                                )
                                (C {(echo)} {(SQ )})
                                (C {(echo)} 
                                  {
                                    (DQ 
                                      (
'   Default is to leave the temporary file to deal with by hand'
                                      )
                                    )
                                  }
                                )
                                (C {(echo)} {(SQ )})
                                (C {(echo)} {(-n)} 
                                  {
                                    (DQ ('  How should I handle ') (${ Id.VSub_Name COMPFILE) 
                                      ('? [Leave it to install later] ')
                                    )
                                  }
                                )
                                (C {(read)} {(HANDLE_LINK)})
                              ]
                            )
                            (command.Case
                              to_match: {(DQ (${ Id.VSub_Name HANDLE_LINK))}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {(Id.Lit_LBracket '[') (dD) (Id.Lit_RBracket ']') (Id.Lit_Star '*')}
                                  ]
                                  action: [
                                    (C {(rm)} {(DQ (${ Id.VSub_Name COMPFILE))})
                                    (C {(echo)} {(SQ )})
                                    (C {(echo)} {(DQ ('   *** Deleting ') (${ Id.VSub_Name COMPFILE))})
                                  ]
                                  spids: [6276 6280 6308 -1]
                                )
                                (case_arm
                                  pat_list: [
                                    {(Id.Lit_LBracket '[') (lL) (Id.Lit_RBracket ']') (Id.Lit_Star '*')}
                                  ]
                                  action: [
                                    (C {(echo)} {(SQ )})
                                    (C {(unlink)} 
                                      {(${ Id.VSub_Name DESTDIR) (/root/) 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:COMPFILE span_id:6331)
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VOp1_DPound
                                              arg_word: {('*') (Id.Lit_Slash /)}
                                            )
                                        )
                                      }
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(ln)} 
                                                  {(${ Id.VSub_Name DESTDIR) 
                                                    (braced_var_sub
                                                      token: 
                                                        (Token
                                                          id: Id.VSub_Name
                                                          val: COMPFILE
                                                          span_id: 6346
                                                        )
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op_id: Id.VOp1_Pound
                                                          arg_word: {(.)}
                                                        )
                                                    )
                                                  } 
                                                  {(${ Id.VSub_Name DESTDIR) (/root/) 
                                                    (braced_var_sub
                                                      token: 
                                                        (Token
                                                          id: Id.VSub_Name
                                                          val: COMPFILE
                                                          span_id: 6356
                                                        )
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op_id: Id.VOp1_DPound
                                                          arg_word: {('*') (Id.Lit_Slash /)}
                                                        )
                                                    )
                                                  }
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:6361)
                                            )
                                          ]
                                          action: [
                                            (C {(echo)} 
                                              {
                                                (DQ ('   *** Link from ') (${ Id.VSub_Name DESTDIR) 
                                                  (braced_var_sub
                                                    token: 
                                                      (Token
                                                        id: Id.VSub_Name
                                                        val: COMPFILE
                                                        span_id: 6374
                                                      )
                                                    suffix_op: 
                                                      (suffix_op.Unary
                                                        op_id: Id.VOp1_Pound
                                                        arg_word: {(.)}
                                                      )
                                                  ) (' to ') (${ Id.VSub_Name DESTDIR) (/root/) 
                                                  (braced_var_sub
                                                    token: 
                                                      (Token
                                                        id: Id.VSub_Name
                                                        val: COMPFILE
                                                        span_id: 6384
                                                      )
                                                    suffix_op: 
                                                      (suffix_op.Unary
                                                        op_id: Id.VOp1_DPound
                                                        arg_word: {('*') (Id.Lit_Slash /)}
                                                      )
                                                  ) (' installed successfully')
                                                )
                                              }
                                            )
                                          ]
                                          spids: [6338 6363]
                                        )
                                      ]
                                      else_action: [
                                        (C {(echo)} 
                                          {
                                            (DQ ('   *** Error linking ') (${ Id.VSub_Name DESTDIR) 
                                              (braced_var_sub
                                                token: 
                                                  (Token
                                                    id: Id.VSub_Name
                                                    val: COMPFILE
                                                    span_id: 6404
                                                  )
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op_id: Id.VOp1_Pound
                                                    arg_word: {(.)}
                                                  )
                                              ) (' to ') (${ Id.VSub_Name DESTDIR) (/root/) 
                                              (braced_var_sub
                                                token: 
                                                  (Token
                                                    id: Id.VSub_Name
                                                    val: COMPFILE
                                                    span_id: 6414
                                                  )
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op_id: Id.VOp1_DPound
                                                    arg_word: {('*') (Id.Lit_Slash /)}
                                                  )
                                              )
                                            )
                                          }
                                        )
                                        (C {(echo)} 
                                          {
                                            (DQ ('   *** ') (${ Id.VSub_Name COMPFILE) 
                                              (' will remain for your consideration')
                                            )
                                          }
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [6311 6315 6436 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_Star '*')}]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ ('   *** ') (${ Id.VSub_Name COMPFILE) 
                                          (' will remain for your consideration')
                                        )
                                      }
                                    )
                                  ]
                                  spids: [6439 6440 6454 -1]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Return val:return span_id:6460)
                            )
                          ]
                          spids: [6015 6020 6463 -1]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name DONT_INSTALL))}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ )}]
                          action: [
                            (C {(do_install_and_rm)} {(DQ (${ Id.VSub_Name FILE_MODE))} 
                              {(DQ (${ Id.VSub_Number 1))} {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))}
                            )
                          ]
                          spids: [6481 6483 6510 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [(C {(unset)} {(DONT_INSTALL)})]
                          spids: [6513 6514 6522 -1]
                        )
                      ]
                    )
                  ]
                  spids: [5914 5931]
                )
              ]
              else_action: [
                (C {(do_install_and_rm)} {(DQ (${ Id.VSub_Name FILE_MODE))} {(DQ (${ Id.VSub_Number 1))} 
                  {(DQ (${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name INSTALL_DIR))}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:6561)
              arg_word: {($ Id.VSub_QMark '$?')}
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-d)} {(DQ (${ Id.VSub_Name TEMPROOT))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:6583)
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ('*** FATAL ERROR: The temproot directory (') (${ Id.VSub_Name TEMPROOT) (')'))}
            )
            (C {(echo)} 
              {(SQ (Token id:Id.Lit_Chars val:'                 has disappeared!' span_id:6602))}
            )
            (C {(echo)} {(SQ )})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:6612)
              arg_word: {(1)}
            )
          ]
          spids: [6568 6585]
        )
      ]
    )
    (C {(echo)} {(SQ )})
    (C {(echo)} {(DQ ('*** Beginning comparison'))})
    (C {(echo)} {(SQ )})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ (${ Id.VSub_Name PRE_WORLD))} {(-a)} {(-z)} 
                  {(DQ (${ Id.VSub_Name RERUN))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:6668)
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ('   *** Checking ') (${ Id.VSub_Name DESTDIR) ('/etc/rc.d for stale files'))}
            )
            (C {(echo)} {(SQ )})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(cd)} {(DQ (${ Id.VSub_Name DESTDIR) (/etc/rc.d))})
                (command.ForEach
                  iter_name: file
                  iter_words: [{(Id.Lit_Star '*')}]
                  do_arg_iter: F
                  body: 
                    (command.DoGroup
                      children: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: 
                                    (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} 
                                      {
                                        (DQ (${ Id.VSub_Name TEMPROOT) (/etc/rc.d/) 
                                          (${ Id.VSub_Name file)
                                        )
                                      } {(Id.Lit_RBracket ']')}
                                    )
                                  terminator: (Token id:Id.Op_Semi val:';' span_id:6733)
                                )
                              ]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:STALE_RC_FILES)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ (${ Id.VSub_Name STALE_RC_FILES) (' ') 
                                            (${ Id.VSub_Name file)
                                          )
                                        }
                                      spids: [6738]
                                    )
                                  ]
                                )
                              ]
                              spids: [6714 6735]
                            )
                          ]
                        )
                      ]
                    )
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name STALE_RC_FILES))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )} {(SQ (Token id:Id.Lit_Chars val:' *' span_id:6771))}]
                  action: [
                    (C {(echo)} 
                      {(SQ (Token id:Id.Lit_Chars val:'   *** No stale files found' span_id:6779))}
                    )
                  ]
                  spids: [6767 6773 6783 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('   *** The following files exist in ') (${ Id.VSub_Name DESTDIR) 
                          ('/etc/rc.d but not in')
                        )
                      }
                    )
                    (C {(echo)} {(DQ ('       ') (${ Id.VSub_Name TEMPROOT) ('/etc/rc.d/:'))})
                    (C {(echo)} {(SQ )})
                    (C {(echo)} {(DQ (${ Id.VSub_Name STALE_RC_FILES))})
                    (C {(echo)} {(SQ )})
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: 
'       The presence of stale files in this directory can cause the'
                            span_id: 6836
                          )
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: '       dreaded unpredictable results, and therefore it is highly'
                            span_id: 6843
                          )
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: '       recommended that you delete them.'
                            span_id: 6850
                          )
                        )
                      }
                    )
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ )}]
                          action: [
                            (C {(echo)} {(SQ )})
                            (C {(echo)} {(-n)} 
                              {
                                (SQ 
                                  (Token
                                    id: Id.Lit_Chars
                                    val: '   *** Delete them now? [n] '
                                    span_id: 6881
                                  )
                                )
                              }
                            )
                            (C {(read)} {(DELETE_STALE_RC_FILES)})
                            (command.Case
                              to_match: {(DQ (${ Id.VSub_Name DELETE_STALE_RC_FILES))}
                              arms: [
                                (case_arm
                                  pat_list: [{(Id.Lit_LBracket '[') (yY) (Id.Lit_RBracket ']')}]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (SQ 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: '      *** Deleting ... '
                                            span_id: 6910
                                          )
                                        )
                                      }
                                    )
                                    (C {(rm)} {(${ Id.VSub_Name STALE_RC_FILES)})
                                    (C {(echo)} 
                                      {
                                        (SQ 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: '                       done.'
                                            span_id: 6924
                                          )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [6901 6904 6928 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_Star '*')}]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (SQ 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: '      *** Files will not be deleted'
                                            span_id: 6938
                                          )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [6931 6932 6942 -1]
                                )
                              ]
                            )
                            (C {(sleep)} {(2)})
                          ]
                          spids: [6865 6867 6953 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Id.Lit_LBracket '[')} {(-n)} 
                                          {(DQ (${ Id.VSub_Name DELETE_STALE_RC_FILES))} {(Id.Lit_RBracket ']')}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:6973)
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (SQ 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: '      *** Deleting ... '
                                            span_id: 6981
                                          )
                                        )
                                      }
                                    )
                                    (C {(rm)} {(${ Id.VSub_Name STALE_RC_FILES)})
                                    (C {(echo)} 
                                      {
                                        (SQ 
                                          (Token
                                            id: Id.Lit_Chars
                                            val: '                       done.'
                                            span_id: 6995
                                          )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [6960 6975]
                                )
                              ]
                            )
                          ]
                          spids: [6956 6957 -1 7002]
                        )
                      ]
                    )
                  ]
                  spids: [6786 6787 7005 -1]
                )
              ]
            )
            (C {(echo)} {(SQ )})
          ]
          spids: [6645 6670]
        )
      ]
    )
    (C {(cd)} {(DQ (${ Id.VSub_Name TEMPROOT))})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-r)} {(DQ (${ Id.VSub_Name MM_PRE_COMPARE_SCRIPT))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:7041)
            )
          ]
          action: [(C {(.)} {(DQ (${ Id.VSub_Name MM_PRE_COMPARE_SCRIPT))})]
          spids: [7028 7043]
        )
      ]
    )
    (command.ForEach
      iter_name: COMPFILE
      iter_words: [
        {
          (command_sub
            left_token: (Token id:Id.Left_Backtick val:'`' span_id:7075)
            command_list: 
              (command.CommandList
                children: [(command.Pipeline children:[(C {(find)} {(.)}) (C {(sort)})] negated:F)]
              )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-e)} 
                          {
                            (DQ (${ Id.VSub_Name DESTDIR) 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:COMPFILE span_id:7103)
                                suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)})
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:7110)
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:INSTALLED_TYPE)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:7116)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(stat)} {(-f)} 
                                        {(SQ (Token id:Id.Lit_Chars val:'%HT' span_id:7124))} 
                                        {(${ Id.VSub_Name DESTDIR) 
                                          (braced_var_sub
                                            token: (Token id:Id.VSub_Name val:COMPFILE span_id:7131)
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op_id: Id.VOp1_Pound
                                                arg_word: {(.)}
                                              )
                                          )
                                        }
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [7115]
                        )
                      ]
                    )
                  ]
                  spids: [7092 7112]
                )
              ]
              else_action: [
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Continue val:continue span_id:7141)
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:TEMPROOT_TYPE)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:7148)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(stat)} {(-f)} {(SQ (Token id:Id.Lit_Chars val:'%HT' span_id:7156))} 
                                {($ Id.VSub_DollarName '$COMPFILE')}
                              )
                            ]
                          )
                      )
                    }
                  spids: [7147]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} 
                          {(DQ ($ Id.VSub_DollarName '$TEMPROOT_TYPE'))} {(Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$INSTALLED_TYPE'))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:7181)
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$COMPFILE'))} 
                          {(Id.Lit_Equals '=')} {(SQ (Token id:Id.Lit_Chars val:. span_id:7195))} {(Id.Lit_RBracket ']')}
                        )
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:7202)
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:TEMPROOT_TYPE)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:7206)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {($ Id.VSub_DollarName '$TEMPROOT_TYPE')})
                                          (C {(tr)} 
                                            {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (upper) 
                                              (Id.Lit_Other ':') (Id.Lit_RBracket ']')
                                            } {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (lower) (Id.Lit_Other ':') (Id.Lit_RBracket ']')}
                                          )
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [7205]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:INSTALLED_TYPE)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:7232)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Pipeline
                                        children: [
                                          (C {(echo)} {($ Id.VSub_DollarName '$INSTALLED_TYPE')})
                                          (C {(tr)} 
                                            {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (upper) 
                                              (Id.Lit_Other ':') (Id.Lit_RBracket ']')
                                            } {(Id.Lit_LBracket '[') (Id.Lit_Other ':') (lower) (Id.Lit_Other ':') (Id.Lit_RBracket ']')}
                                          )
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [7231]
                        )
                      ]
                    )
                    (C {(echo)} 
                      {
                        (DQ ('*** The installed file ') (${ Id.VSub_Name DESTDIR) 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:COMPFILE span_id:7266)
                            suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)})
                          ) (' has the type ') 
                          (word_part.EscapedLiteral
                            token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7271)
                          ) ($ Id.VSub_DollarName '$INSTALLED_TYPE') 
                          (word_part.EscapedLiteral
                            token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7273)
                          )
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (DQ ('    but the new version has the type ') 
                          (word_part.EscapedLiteral
                            token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7281)
                          ) ($ Id.VSub_DollarName '$TEMPROOT_TYPE') 
                          (word_part.EscapedLiteral
                            token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7283)
                          )
                        )
                      }
                    )
                    (C {(echo)} {(SQ )})
                    (C {(echo)} {(DQ ('    How would you like to handle this?'))})
                    (C {(echo)} {(SQ )})
                    (C {(echo)} 
                      {
                        (DQ ("    Use 'r' to remove ") (${ Id.VSub_Name DESTDIR) 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:COMPFILE span_id:7314)
                            suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)})
                          )
                        )
                      }
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$TEMPROOT_TYPE'))}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ (Token id:Id.Lit_Chars val:'symbolic link' span_id:7331))}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:TARGET)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:7337)
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(readlink)} {($ Id.VSub_DollarName '$COMPFILE')})
                                            ]
                                          )
                                      )
                                    }
                                  spids: [7336]
                                )
                              ]
                            )
                            (C {(echo)} 
                              {
                                (DQ ('    and create a link to ') ($ Id.VSub_DollarName '$TARGET') 
                                  (' in its place')
                                )
                              }
                            )
                          ]
                          spids: [7330 7333 7354 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ('    You will be able to install it as a ') 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7364)
                                  ) ($ Id.VSub_DollarName '$TEMPROOT_TYPE') 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:7366)
                                  )
                                )
                              }
                            )
                          ]
                          spids: [7357 7358 7369 -1]
                        )
                      ]
                    )
                    (C {(echo)} {(SQ )})
                    (C {(echo)} {(DQ ("    Use 'i' to ignore this"))})
                    (C {(echo)} {(SQ )})
                    (C {(echo)} {(-n)} {(DQ ('    How to proceed? [i] '))})
                    (C {(read)} {(ANSWER)})
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$ANSWER'))}
                      arms: [
                        (case_arm
                          pat_list: [{(Id.Lit_LBracket '[') (rR) (Id.Lit_RBracket ']')}]
                          action: [
                            (command.Case
                              to_match: {(DQ (${ Id.VSub_Name PRESERVE_FILES))}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {(Id.Lit_LBracket '[') (Yy) (Id.Lit_RBracket ']') 
                                      (Id.Lit_LBracket '[') (Ee) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Ss) (Id.Lit_RBracket ']')
                                    }
                                  ]
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {(mv)} 
                                          {(${ Id.VSub_Name DESTDIR) 
                                            (braced_var_sub
                                              token: 
                                                (Token
                                                  id: Id.VSub_Name
                                                  val: COMPFILE
                                                  span_id: 7451
                                                )
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op_id: Id.VOp1_Pound
                                                  arg_word: {(.)}
                                                )
                                            )
                                          } {(${ Id.VSub_Name PRESERVE_FILES_DIR) (/)}
                                        )
                                        (command.ControlFlow
                                          token: (Token id:Id.ControlFlow_Exit val:exit span_id:7463)
                                          arg_word: {(1)}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [7433 7442 7467 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_Star '*')}]
                                  action: [
                                    (C {(rm)} {(-rf)} 
                                      {(${ Id.VSub_Name DESTDIR) 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:COMPFILE span_id:7481)
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VOp1_Pound
                                              arg_word: {(.)}
                                            )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [7470 7471 7486 -1]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {(DQ ($ Id.VSub_DollarName '$TEMPROOT_TYPE'))}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {(SQ (Token id:Id.Lit_Chars val:'symbolic link' span_id:7502))}
                                  ]
                                  action: [
                                    (C {(ln)} {(-sf)} {($ Id.VSub_DollarName '$TARGET')} 
                                      {(${ Id.VSub_Name DESTDIR) 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:COMPFILE span_id:7516)
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VOp1_Pound
                                              arg_word: {(.)}
                                            )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [7501 7504 7521 -1]
                                )
                              ]
                            )
                          ]
                          spids: [7417 7420 7526 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (C {(echo)} {(SQ )})
                            (C {(echo)} 
                              {
                                (DQ ('*** See the man page about adding ') 
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:COMPFILE span_id:7543)
                                    suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)})
                                  ) (' to the list of IGNORE_FILES')
                                )
                              }
                            )
                            (C {(press_to_continue)})
                          ]
                          spids: [7529 7530 7553 -1]
                        )
                      ]
                    )
                    (C {(echo)} {(SQ )})
                  ]
                  spids: [7164 7183]
                )
              ]
            )
          ]
        )
    )
    (command.ForEach
      iter_name: COMPFILE
      iter_words: [
        {
          (command_sub
            left_token: (Token id:Id.Left_Backtick val:'`' span_id:7576)
            command_list: 
              (command.CommandList
                children: [
                  (command.Pipeline
                    children: [(C {(find)} {(.)} {(-type)} {(f)}) (C {(sort)})]
                    negated: F
                  )
                ]
              )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-e)} 
                          {
                            (DQ (${ Id.VSub_Name DESTDIR) 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:COMPFILE span_id:7622)
                                suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{(.)})
                              )
                            )
                          } {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:7629)
                    )
                  ]
                  action: [
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ )}]
                          action: [(C {(diff_loop)})]
                          spids: [7645 7647 7653 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.Case
                              to_match: {(DQ (${ Id.VSub_Name AUTO_INSTALL))}
                              arms: [
                                (case_arm
                                  pat_list: [{(SQ )}]
                                  action: [
                                    (C {(echo)} 
                                      {
                                        (DQ ('   *** ') (${ Id.VSub_Name COMPFILE) 
                                          (' will remain for your consideration')
                                        )
                                      }
                                    )
                                  ]
                                  spids: [7671 7673 7691 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_Star '*')}]
                                  action: [(C {(diff_loop)})]
                                  spids: [7694 7695 7701 -1]
                                )
                              ]
                            )
                          ]
                          spids: [7656 7657 7707 -1]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:7716)
                    )
                  ]
                  spids: [7609 7631]
                )
              ]
            )
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name STRICT))}
              arms: [
                (case_arm
                  pat_list: [
                    {(SQ )}
                    {(Id.Lit_LBracket '[') (Nn) (Id.Lit_RBracket ']') (Id.Lit_LBracket '[') (Oo) 
                      (Id.Lit_RBracket ']')
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ID1)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_Backtick val:'`' span_id:7769)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Simple
                                        words: [
                                          {(grep)}
                                          {
                                            (DQ ('[') (Id.Lit_Other '$') (']') (${ Id.VSub_Name ID_TAG) 
                                              (':')
                                            )
                                          }
                                          {(${ Id.VSub_Name DESTDIR) 
                                            (braced_var_sub
                                              token: 
                                                (Token
                                                  id: Id.VSub_Name
                                                  val: COMPFILE
                                                  span_id: 7788
                                                )
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op_id: Id.VOp1_Pound
                                                  arg_word: {(.)}
                                                )
                                            )
                                          }
                                        ]
                                        redirects: [
                                          (redir.Redir
                                            op: (Token id:Id.Redir_Great val:'2>' span_id:7793)
                                            fd: 2
                                            arg_word: {(/dev/null)}
                                          )
                                        ]
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [7768]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:ID2)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: (Token id:Id.Left_Backtick val:'`' span_id:7799)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (command.Simple
                                            words: [
                                              {(grep)}
                                              {
                                                (DQ ('[') (Id.Lit_Other '$') (']') 
                                                  (${ Id.VSub_Name ID_TAG) (':')
                                                )
                                              }
                                              {(${ Id.VSub_Name COMPFILE)}
                                            ]
                                            redirects: [
                                              (redir.Redir
                                                op: (Token id:Id.Redir_Great val:'2>' span_id:7818)
                                                fd: 2
                                                arg_word: {(/dev/null)}
                                              )
                                            ]
                                          )
                                        ]
                                      )
                                  )
                                }
                              spids: [7798]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:ID2)
                              op: assign_op.Equal
                              rhs: {(none)}
                              spids: [7824]
                            )
                          ]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name ID2))}
                      arms: [
                        (case_arm
                          pat_list: [{(DQ (${ Id.VSub_Name ID1))}]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ (' *** Temp ') (${ Id.VSub_Name COMPFILE) 
                                  (' and installed have the same Id, deleting')
                                )
                              }
                            )
                            (C {(rm)} {(DQ (${ Id.VSub_Name COMPFILE))})
                          ]
                          spids: [7840 7845 7868 -1]
                        )
                      ]
                    )
                  ]
                  spids: [7734 7745 7874 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ (${ Id.VSub_Name COMPFILE))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:7906)
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  words: [
                                    {(diff)}
                                    {(-q)}
                                    {(${ Id.VSub_Name DIFF_OPTIONS)}
                                    {
                                      (DQ (${ Id.VSub_Name DESTDIR) 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:COMPFILE span_id:7939)
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VOp1_Pound
                                              arg_word: {(.)}
                                            )
                                        )
                                      )
                                    }
                                    {(DQ (${ Id.VSub_Name COMPFILE))}
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: (Token id:Id.Redir_Great val:'>' span_id:7951)
                                      fd: -1
                                      arg_word: {(/dev/null)}
                                    )
                                    (redir.Redir
                                      op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:7957)
                                      fd: 2
                                      arg_word: {(1)}
                                    )
                                  ]
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:7959)
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ (' *** Temp ') (${ Id.VSub_Name COMPFILE) 
                                  (' and installed are the same, deleting')
                                )
                              }
                            )
                            (C {(rm)} {(DQ (${ Id.VSub_Name COMPFILE))})
                          ]
                          spids: [7924 7961]
                        )
                      ]
                      else_action: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: 
                                    (C {(Id.Lit_LBracket '[')} {(-n)} 
                                      {(DQ ($ Id.VSub_DollarName '$FREEBSD_ID'))} {(Id.Lit_RBracket ']')}
                                    )
                                  terminator: (Token id:Id.Op_Semi val:';' span_id:8026)
                                )
                              ]
                              action: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              words: [
                                                {(diff)}
                                                {(-q)}
                                                {(-I) 
                                                  (SQ 
                                                    (Token
                                                      id: Id.Lit_Chars
                                                      val: '[$]FreeBSD.*[$]'
                                                      span_id: 8039
                                                    )
                                                  )
                                                }
                                                {
                                                  (DQ (${ Id.VSub_Name DESTDIR) 
                                                    (braced_var_sub
                                                      token: 
                                                        (Token
                                                          id: Id.VSub_Name
                                                          val: COMPFILE
                                                          span_id: 8047
                                                        )
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op_id: Id.VOp1_Pound
                                                          arg_word: {(.)}
                                                        )
                                                    )
                                                  )
                                                }
                                                {(DQ (${ Id.VSub_Name COMPFILE))}
                                              ]
                                              redirects: [
                                                (redir.Redir
                                                  op: (Token id:Id.Redir_Great val:'>' span_id:8059)
                                                  fd: -1
                                                  arg_word: {(/dev/null)}
                                                )
                                                (redir.Redir
                                                  op: 
                                                    (Token
                                                      id: Id.Redir_GreatAnd
                                                      val: '2>&'
                                                      span_id: 8065
                                                    )
                                                  fd: 2
                                                  arg_word: {(1)}
                                                )
                                              ]
                                            )
                                          terminator: (Token id:Id.Op_Semi val:';' span_id:8067)
                                        )
                                      ]
                                      action: [
                                        (command.If
                                          arms: [
                                            (if_arm
                                              cond: [
                                                (command.Sentence
                                                  child: 
                                                    (C {(mm_install)} {(DQ (${ Id.VSub_Name COMPFILE))})
                                                  terminator: 
                                                    (Token
                                                      id: Id.Op_Semi
                                                      val: ';'
                                                      span_id: 8081
                                                    )
                                                )
                                              ]
                                              action: [
                                                (C {(echo)} 
                                                  {
                                                    (DQ ('*** Updated revision control Id for ') 
                                                      (${ Id.VSub_Name DESTDIR) 
                                                      (braced_var_sub
                                                        token: 
                                                          (Token
                                                            id: Id.VSub_Name
                                                            val: COMPFILE
                                                            span_id: 8094
                                                          )
                                                        suffix_op: 
                                                          (suffix_op.Unary
                                                            op_id: Id.VOp1_Pound
                                                            arg_word: {(.)}
                                                          )
                                                      )
                                                    )
                                                  }
                                                )
                                              ]
                                              spids: [8072 8083]
                                            )
                                          ]
                                          else_action: [
                                            (C {(echo)} 
                                              {
                                                (DQ ('*** Problem installing ') 
                                                  (${ Id.VSub_Name COMPFILE) (', it will remain to merge by hand later')
                                                )
                                              }
                                            )
                                          ]
                                        )
                                        (command.ControlFlow
                                          token: 
                                            (Token
                                              id: Id.ControlFlow_Continue
                                              val: continue
                                              span_id: 8118
                                            )
                                        )
                                      ]
                                      spids: [8031 8069]
                                    )
                                  ]
                                )
                              ]
                              spids: [8015 8028]
                            )
                          ]
                        )
                        (command.Case
                          to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))}
                          arms: [
                            (case_arm
                              pat_list: [{(SQ )}]
                              action: [(C {(diff_loop)})]
                              spids: [8138 8140 8150 -1]
                            )
                            (case_arm
                              pat_list: [{(Id.Lit_Star '*')}]
                              action: [
                                (C {(echo)} 
                                  {
                                    (DQ ('   *** ') (${ Id.VSub_Name COMPFILE) 
                                      (' will remain for your consideration')
                                    )
                                  }
                                )
                              ]
                              spids: [8153 8154 8172 -1]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  spids: [7893 7908]
                )
              ]
            )
          ]
        )
    )
    (C {(echo)} {(SQ )})
    (C {(echo)} {(DQ ('*** Comparison complete'))})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-s)} {(DQ (${ Id.VSub_Name MTREENEW))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:8223)
            )
          ]
          action: [
            (C {(echo)} {(DQ ('*** Saving mtree database for future upgrades'))})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test)} {(-e)} {(DQ (${ Id.VSub_Name MTREEFILE))})
                (C {(unlink)} {(${ Id.VSub_Name MTREEFILE)})
              ]
            )
            (C {(mv)} {(${ Id.VSub_Name MTREENEW)} {(${ Id.VSub_Name MTREEFILE)})
          ]
          spids: [8210 8225]
        )
      ]
    )
    (C {(echo)} {(SQ )})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TEST_FOR_FILES)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_Backtick val:'`' span_id:8274)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Simple
                        words: [
                          {(find)}
                          {(${ Id.VSub_Name TEMPROOT)}
                          {(-type)}
                          {(f)}
                          {(-size)}
                          {(Id.Lit_Other '+') (0)}
                        ]
                        redirects: [
                          (redir.Redir
                            op: (Token id:Id.Redir_Great val:'2>' span_id:8292)
                            fd: 2
                            arg_word: {(/dev/null)}
                          )
                        ]
                      )
                    ]
                  )
              )
            }
          spids: [8273]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name TEST_FOR_FILES))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:8309)
            )
          ]
          action: [
            (C {(echo)} {(DQ ('*** Files that remain for you to merge by hand:'))})
            (command.Pipeline
              children: [
                (C {(find)} {(DQ (${ Id.VSub_Name TEMPROOT))} {(-type)} {(f)} {(-size)} 
                  {(Id.Lit_Other '+') (0)}
                )
                (C {(sort)})
              ]
              negated: F
            )
            (C {(echo)} {(SQ )})
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [
                    (C {(echo)} {(-n)} 
                      {
                        (DQ ('Do you wish to delete what is left of ') (${ Id.VSub_Name TEMPROOT) 
                          ('? [no] ')
                        )
                      }
                    )
                    (C {(read)} {(DEL_TEMPROOT)})
                    (command.Case
                      to_match: {(DQ (${ Id.VSub_Name DEL_TEMPROOT))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Id.Lit_LBracket '[') (yY) (Id.Lit_RBracket ']') (Id.Lit_Star '*')}
                          ]
                          action: [(C {(delete_temproot)})]
                          spids: [8395 8399 8405 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (C {(echo)} {(DQ (' *** ') (${ Id.VSub_Name TEMPROOT) (' will remain'))})
                          ]
                          spids: [8408 8409 8423 -1]
                        )
                      ]
                    )
                  ]
                  spids: [8361 8363 8429 -1]
                )
                (case_arm pat_list:[{(Id.Lit_Star '*')}] spids:[8432 8433 8435 -1])
              ]
            )
          ]
          spids: [8296 8311]
        )
      ]
      else_action: [
        (C {(echo)} {(DQ ('*** ') (${ Id.VSub_Name TEMPROOT) (' is empty, deleting'))})
        (C {(delete_temproot)})
      ]
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES))}
      arms: [
        (case_arm pat_list:[{(SQ )}] spids:[8469 8471 8473 -1])
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [
                    (command.Pipeline
                      children: [
                        (command.Subshell
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {(echo)} {(SQ )})
                                (C {(echo)} 
                                  {
                                    (SQ 
                                      (Token
                                        id: Id.Lit_Chars
                                        val: 
'*** You chose the automatic install option for files that did not'
                                        span_id: 8507
                                      )
                                    )
                                  }
                                )
                                (C {(echo)} 
                                  {
                                    (SQ 
                                      (Token
                                        id: Id.Lit_Chars
                                        val: 
'    exist on your system.  The following were installed for you:'
                                        span_id: 8514
                                      )
                                    )
                                  }
                                )
                                (C {(echo)} {(DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES))})
                              ]
                            )
                        )
                        (C {(${ Id.VSub_Name PAGER)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [8490 8492 8536 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(echo)} {(SQ )})
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: '*** You chose the automatic install option for files that did not'
                            span_id: 8552
                          )
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: '    exist on your system.  The following were installed for you:'
                            span_id: 8559
                          )
                        )
                      }
                    )
                    (C {(echo)} {(DQ (${ Id.VSub_Name AUTO_INSTALLED_FILES))})
                  ]
                  spids: [8539 8540 8572 -1]
                )
              ]
            )
          ]
          spids: [8475 8476 8578 -1]
        )
      ]
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name AUTO_UPGRADED_FILES))}
      arms: [
        (case_arm pat_list:[{(SQ )}] spids:[8593 8595 8597 -1])
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.Case
              to_match: {(DQ (${ Id.VSub_Name AUTO_RUN))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [
                    (command.Pipeline
                      children: [
                        (command.Subshell
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {(echo)} {(SQ )})
                                (C {(echo)} 
                                  {
                                    (SQ 
                                      (Token
                                        id: Id.Lit_Chars
                                        val: 
'*** You chose the automatic upgrade option for files that you did'
                                        span_id: 8631
                                      )
                                    )
                                  }
                                )
                                (C {(echo)} 
                                  {
                                    (SQ 
                                      (Token
                                        id: Id.Lit_Chars
                                        val: 
'    not alter on your system.  The following were upgraded for you:'
                                        span_id: 8638
                                      )
                                    )
                                  }
                                )
                                (C {(echo)} {(DQ (${ Id.VSub_Name AUTO_UPGRADED_FILES))})
                              ]
                            )
                        )
                        (C {(${ Id.VSub_Name PAGER)})
                      ]
                      negated: F
                    )
                  ]
                  spids: [8614 8616 8660 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(echo)} {(SQ )})
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: '*** You chose the automatic upgrade option for files that you did'
                            span_id: 8676
                          )
                        )
                      }
                    )
                    (C {(echo)} 
                      {
                        (SQ 
                          (Token
                            id: Id.Lit_Chars
                            val: 
'    not alter on your system.  The following were upgraded for you:'
                            span_id: 8683
                          )
                        )
                      }
                    )
                    (C {(echo)} {(DQ (${ Id.VSub_Name AUTO_UPGRADED_FILES))})
                  ]
                  spids: [8663 8664 8696 -1]
                )
              ]
            )
          ]
          spids: [8599 8600 8702 -1]
        )
      ]
    )
    (command.ShFunction
      name: run_it_now
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$AUTO_RUN'))} 
                  {(Id.Lit_RBracket ']')}
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:8727)
                )
              ]
            )
            (C {(local)} {(answer)})
            (C {(echo)} {(SQ )})
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:8743)
              cond: [
                (command.Sentence
                  child: (C {(Id.Lit_Other ':')})
                  terminator: (Token id:Id.Op_Semi val:';' span_id:8747)
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$RUN_UPDATES'))} 
                                  {(Id.Lit_Equals '=')} {(always)} {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:8765)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:answer)
                                  op: assign_op.Equal
                                  rhs: {(y)}
                                  spids: [8770]
                                )
                              ]
                            )
                          ]
                          spids: [8752 8767]
                        )
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$RUN_UPDATES'))} 
                                  {(Id.Lit_Equals '=')} {(never)} {(Id.Lit_RBracket ']')}
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:8787)
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:answer)
                                  op: assign_op.Equal
                                  rhs: {(n)}
                                  spids: [8792]
                                )
                              ]
                            )
                          ]
                          spids: [8774 8789]
                        )
                      ]
                      else_action: [
                        (C {(echo)} {(-n)} 
                          {
                            (SQ 
                              (Token
                                id: Id.Lit_Chars
                                val: '    Would you like to run it now? y or n [n] '
                                span_id: 8804
                              )
                            )
                          }
                        )
                        (C {(read)} {(answer)})
                      ]
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$answer'))}
                      arms: [
                        (case_arm
                          pat_list: [{(y)}]
                          action: [
                            (C {(echo)} {(DQ ('    Running ') (${ Id.VSub_Number 1))})
                            (C {(echo)} {(SQ )})
                            (C {(eval)} {(DQ (${ Id.VSub_Number 1))})
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Return val:return span_id:8855)
                            )
                          ]
                          spids: [8826 8827 8858 -1]
                        )
                        (case_arm
                          pat_list: [{(SQ )} {(n)}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} 
                                          {(DQ ($ Id.VSub_DollarName '$RUN_UPDATES'))} {(Id.Lit_Equals '=')} {(never)} {(Id.Lit_RBracket ']')}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:8883)
                                    )
                                  ]
                                  action: [
                                    (C {(echo)} {(SQ )})
                                    (C {(echo)} {(DQ ('       *** Cancelled'))})
                                    (C {(echo)} {(SQ )})
                                  ]
                                  spids: [8868 8885]
                                )
                              ]
                            )
                            (C {(echo)} 
                              {(DQ ('    Make sure to run ') (${ Id.VSub_Number 1) (' yourself'))}
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Return val:return span_id:8921)
                            )
                          ]
                          spids: [8861 8865 8924 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (C {(echo)} {(SQ )})
                            (C {(echo)} 
                              {
                                (DQ ('       *** Sorry, I do not understand your answer (') 
                                  (${ Id.VSub_Name answer) (')')
                                )
                              }
                            )
                            (C {(echo)} {(SQ )})
                          ]
                          spids: [8927 8928 -1 8954]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name NEED_NEWALIASES))}
      arms: [
        (case_arm pat_list:[{(SQ )}] spids:[8972 8974 8976 -1])
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (C {(echo)} {(SQ )})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name DESTDIR))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:9001)
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('*** You installed a new aliases file into ') (${ Id.VSub_Name DESTDIR) 
                          ('/etc/mail, but')
                        )
                      }
                    )
                    (C {(echo)} 
                      {(DQ ('    the newaliases command is limited to the directories configured'))}
                    )
                    (C {(echo)} 
                      {(DQ ('    in sendmail.cf.  Make sure to create your aliases database by'))}
                    )
                    (C {(echo)} {(DQ ('    hand when your sendmail configuration is done.'))})
                  ]
                  spids: [8988 9003]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ('*** You installed a new aliases file, so make sure that you run'))})
                (C {(echo)} {(DQ ("    '/usr/bin/newaliases' to rebuild your aliases database"))})
                (C {(run_it_now)} {(SQ (Token id:Id.Lit_Chars val:/usr/bin/newaliases span_id:9058))})
              ]
            )
          ]
          spids: [8978 8979 9065 -1]
        )
      ]
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name NEED_CAP_MKDB))}
      arms: [
        (case_arm pat_list:[{(SQ )}] spids:[9080 9082 9084 -1])
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (C {(echo)} {(SQ )})
            (C {(echo)} {(DQ ('*** You installed a login.conf file, so make sure that you run'))})
            (C {(echo)} 
              {(DQ ("    '/usr/bin/cap_mkdb ") (${ Id.VSub_Name DESTDIR) ("/etc/login.conf'"))}
            )
            (C {(echo)} {(DQ ('     to rebuild your login.conf database'))})
            (C {(run_it_now)} {(DQ ('/usr/bin/cap_mkdb ') (${ Id.VSub_Name DESTDIR) (/etc/login.conf))})
          ]
          spids: [9086 9087 9132 -1]
        )
      ]
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name NEED_SERVICES_MKDB))}
      arms: [
        (case_arm pat_list:[{(SQ )}] spids:[9147 9149 9151 -1])
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (C {(echo)} {(SQ )})
            (C {(echo)} {(DQ ('*** You installed a services file, so make sure that you run'))})
            (C {(echo)} 
              {
                (DQ ("    '/usr/sbin/services_mkdb -q -o ") (${ Id.VSub_Name DESTDIR) 
                  ('/var/db/services.db ') (${ Id.VSub_Name DESTDIR) ("/etc/services'")
                )
              }
            )
            (C {(echo)} {(DQ ('     to rebuild your services database'))})
            (C {(run_it_now)} 
              {
                (DQ ('/usr/sbin/services_mkdb -q -o ') (${ Id.VSub_Name DESTDIR) 
                  ('/var/db/services.db ') (${ Id.VSub_Name DESTDIR) (/etc/services)
                )
              }
            )
          ]
          spids: [9153 9154 9207 -1]
        )
      ]
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name NEED_PWD_MKDB))}
      arms: [
        (case_arm pat_list:[{(SQ )}] spids:[9222 9224 9226 -1])
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (C {(echo)} {(SQ )})
            (C {(echo)} {(DQ ('*** You installed a new master.passwd file, so make sure that you run'))})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name DESTDIR))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:9258)
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ("    '/usr/sbin/pwd_mkdb -d ") (${ Id.VSub_Name DESTDIR) ('/etc -p ') 
                          (${ Id.VSub_Name DESTDIR) ("/etc/master.passwd'")
                        )
                      }
                    )
                    (C {(echo)} {(DQ ('    to rebuild your password files'))})
                    (C {(run_it_now)} 
                      {
                        (DQ ('/usr/sbin/pwd_mkdb -d ') (${ Id.VSub_Name DESTDIR) ('/etc -p ') 
                          (${ Id.VSub_Name DESTDIR) (/etc/master.passwd)
                        )
                      }
                    )
                  ]
                  spids: [9245 9260]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ("    '/usr/sbin/pwd_mkdb -p /etc/master.passwd'"))})
                (C {(echo)} {(DQ ('     to rebuild your password files'))})
                (C {(run_it_now)} 
                  {
                    (SQ 
                      (Token
                        id: Id.Lit_Chars
                        val: '/usr/sbin/pwd_mkdb -p /etc/master.passwd'
                        span_id: 9320
                      )
                    )
                  }
                )
              ]
            )
          ]
          spids: [9228 9229 9327 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-e)} {(DQ (${ Id.VSub_Name DESTDIR) (/etc/localtime))} 
                  {(-a)} {(Id.KW_Bang '!')} {(-L)} {(DQ (${ Id.VSub_Name DESTDIR) (/etc/localtime))} {(-a)} {(-z)} 
                  {(DQ (${ Id.VSub_Name PRE_WORLD))} {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:9369)
            )
          ]
          action: [
            (C {(echo)} {(SQ )})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name DESTDIR))} 
                  {(Id.Lit_RBracket ']')}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:tzs_args)
                      op: assign_op.Equal
                      rhs: {(DQ ('-C ') (${ Id.VSub_Name DESTDIR))}
                      spids: [9397]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-f)} 
                          {(DQ (${ Id.VSub_Name DESTDIR) (/var/db/zoneinfo))} {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:9420)
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ('*** Reinstalling ') 
                          (command_sub
                            left_token: (Token id:Id.Left_Backtick val:'`' span_id:9429)
                            command_list: 
                              (command.CommandList
                                children: [(C {(cat)} {(${ Id.VSub_Name DESTDIR) (/var/db/zoneinfo)})]
                              )
                          ) (' as ') (${ Id.VSub_Name DESTDIR) (/etc/localtime)
                        )
                      }
                    )
                    (C {(tzsetup)} {($ Id.VSub_DollarName '$tzs_args')} {(-r)})
                  ]
                  spids: [9406 9422]
                )
              ]
              else_action: [
                (C {(echo)} 
                  {
                    (DQ ('*** There is no ') (${ Id.VSub_Name DESTDIR) 
                      ('/var/db/zoneinfo file to update ') (${ Id.VSub_Name DESTDIR) (/etc/localtime.)
                    )
                  }
                )
                (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'    You should run tzsetup' span_id:9475))})
                (C {(run_it_now)} {(DQ ('tzsetup ') ($ Id.VSub_DollarName '$tzs_args'))})
              ]
            )
          ]
          spids: [9332 9371]
        )
      ]
    )
    (C {(echo)} {(SQ )})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-r)} {(DQ (${ Id.VSub_Name MM_EXIT_SCRIPT))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:9511)
            )
          ]
          action: [(C {(.)} {(DQ (${ Id.VSub_Name MM_EXIT_SCRIPT))})]
          spids: [9498 9513]
        )
      ]
    )
    (command.Case
      to_match: {(DQ (${ Id.VSub_Name COMP_CONFS))}
      arms: [
        (case_arm pat_list:[{(SQ )}] spids:[9537 9539 9541 -1])
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (C {(.)} {(${ Id.VSub_Name DESTDIR) (/etc/defaults/rc.conf)})
            (command.Pipeline
              children: [
                (command.Subshell
                  command_list: 
                    (command.CommandList
                      children: [
                        (C {(echo)} {(SQ )})
                        (C {(echo)} 
                          {(DQ ('*** Comparing conf files: ') (${ Id.VSub_Name rc_conf_files))}
                        )
                        (command.ForEach
                          iter_name: CONF_FILE
                          iter_words: [{(${ Id.VSub_Name rc_conf_files)}]
                          do_arg_iter: F
                          body: 
                            (command.DoGroup
                              children: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.Sentence
                                          child: 
                                            (C {(Id.Lit_LBracket '[')} {(-r)} 
                                              {
                                                (DQ (${ Id.VSub_Name DESTDIR) 
                                                  (${ Id.VSub_Name CONF_FILE)
                                                )
                                              } {(Id.Lit_RBracket ']')}
                                            )
                                          terminator: (Token id:Id.Op_Semi val:';' span_id:9604)
                                        )
                                      ]
                                      action: [
                                        (C {(echo)} {(SQ )})
                                        (C {(echo)} 
                                          {
                                            (DQ ('*** From ') (${ Id.VSub_Name DESTDIR) 
                                              (${ Id.VSub_Name CONF_FILE)
                                            )
                                          }
                                        )
                                        (C {(echo)} 
                                          {
                                            (DQ ('*** From ') (${ Id.VSub_Name DESTDIR) 
                                              (/etc/defaults/rc.conf)
                                            )
                                          }
                                        )
                                        (command.ForEach
                                          iter_name: RC_CONF_VAR
                                          iter_words: [
                                            {
                                              (command_sub
                                                left_token: 
                                                  (Token
                                                    id: Id.Left_Backtick
                                                    val: '`'
                                                    span_id: 9646
                                                  )
                                                command_list: 
                                                  (command.CommandList
                                                    children: [
                                                      (command.Pipeline
                                                        children: [
                                                          (C {(grep)} {(-i)} 
                                                            {(Id.Lit_Other '^') (Id.Lit_LBracket '[') 
                                                              (a-z) (Id.Lit_RBracket ']')
                                                            } {(${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name CONF_FILE)}
                                                          )
                                                          (C {(cut)} {(-d)} 
                                                            {
                                                              (SQ 
                                                                (Token
                                                                  id: Id.Lit_Chars
                                                                  val: '='
                                                                  span_id: 9674
                                                                )
                                                              )
                                                            } {(-f)} {(1)}
                                                          )
                                                        ]
                                                        negated: F
                                                      )
                                                    ]
                                                  )
                                              )
                                            }
                                          ]
                                          do_arg_iter: F
                                          body: 
                                            (command.DoGroup
                                              children: [
                                                (C {(echo)} {(SQ )})
                                                (C {(grep)} {(-w)} 
                                                  {(Id.Lit_Other '^') (${ Id.VSub_Name RC_CONF_VAR)} {(${ Id.VSub_Name DESTDIR) (${ Id.VSub_Name CONF_FILE)}
                                                )
                                                (command.AndOr
                                                  ops: [Id.Op_DPipe]
                                                  children: [
                                                    (C {(grep)} {(-w)} 
                                                      {(Id.Lit_Other '^') 
                                                        (${ Id.VSub_Name RC_CONF_VAR)
                                                      } {(${ Id.VSub_Name DESTDIR) (/etc/defaults/rc.conf)}
                                                    )
                                                    (C {(echo)} 
                                                      {
                                                        (SQ 
                                                          (Token
                                                            id: Id.Lit_Chars
                                                            val: 
' * No default variable with this name'
                                                            span_id: 9729
                                                          )
                                                        )
                                                      }
                                                    )
                                                  ]
                                                )
                                              ]
                                            )
                                        )
                                      ]
                                      spids: [9588 9606]
                                    )
                                  ]
                                )
                              ]
                            )
                        )
                      ]
                    )
                )
                (C {(${ Id.VSub_Name PAGER)})
              ]
              negated: F
            )
            (C {(echo)} {(SQ )})
          ]
          spids: [9543 9544 9755 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ (${ Id.VSub_Name PRESERVE_FILES))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:9773)
            )
          ]
          action: [
            (command.Simple
              words: [
                {(find)}
                {(-d)}
                {($ Id.VSub_DollarName '$PRESERVE_FILES_DIR')}
                {(-type)}
                {(d)}
                {(-empty)}
                {(-delete)}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'2>' span_id:9792)
                  fd: 2
                  arg_word: {(/dev/null)}
                )
              ]
            )
            (command.Simple
              words: [{(rmdir)} {($ Id.VSub_DollarName '$PRESERVE_FILES_DIR')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'2>' span_id:9800)
                  fd: 2
                  arg_word: {(/dev/null)}
                )
              ]
            )
          ]
          spids: [9760 9775]
        )
      ]
    )
    (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:9806) arg_word:{(0)})
  ]
)