(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ARGV0)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(basename)} {(DQ ($ VSub_Number '$0'))})])
                left_token: <Left_Backtick '`'>
                spids: [53 59]
              )
            }
          spids: [52]
        )
      ]
      spids: [52]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:LSB_RELEASE)
          op: Equal
          rhs: {(SQ </etc/lsb-release>)}
          spids: [61]
        )
      ]
      spids: [61]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:VERSIONS_SHELLS)
          op: Equal
          rhs: {(DQ ('ash /bin/bash /bin/dash /bin/ksh /bin/pdksh /bin/sh /bin/zsh'))}
          spids: [66]
        )
      ]
      spids: [66]
    )
    (Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:TRUE) op:Equal rhs:{($ VSub_QMark '$?')} spids:[75])]
      spids: [75]
    )
    (Sentence child:(C {(false)}) terminator:<Op_Semi ';'>)
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:FALSE) op:Equal rhs:{($ VSub_QMark '$?')} spids:[81])]
      spids: [81]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:ERROR) op:Equal rhs:{(2)} spids:[84])]
      spids: [84]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:UNAME_R)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(uname)} {(-r)})])
                left_token: <Left_Backtick '`'>
                spids: [89 93]
              )
            }
          spids: [88]
        )
      ]
      spids: [88]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:UNAME_S)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(uname)} {(-s)})])
                left_token: <Left_Backtick '`'>
                spids: [96 100]
              )
            }
          spids: [95]
        )
      ]
      spids: [95]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:__versions_haveStrings)
          op: Equal
          rhs: {(${ VSub_Name ERROR)}
          spids: [103]
        )
      ]
      spids: [103]
    )
    (FuncDef
      name: versions_osName
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:os_name_)
                  op: Equal
                  rhs: {(SQ <unrecognized>)}
                  spids: [116]
                )
              ]
              spids: [116]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:os_system_)
                  op: Equal
                  rhs: {(${ VSub_Name UNAME_S)}
                  spids: [122]
                )
              ]
              spids: [122]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:os_release_)
                  op: Equal
                  rhs: {(${ VSub_Name UNAME_R)}
                  spids: [128]
                )
              ]
              spids: [128]
            )
            (Case
              to_match: {(${ VSub_Name os_system_)}
              arms: [
                (case_arm
                  pat_list: [{(CYGWIN_NT-) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:os_name_)
                          op: Equal
                          rhs: {(SQ <Cygwin>)}
                          spids: [147]
                        )
                      ]
                      spids: [147]
                    )
                  ]
                  spids: [143 145 152 16777215]
                )
                (case_arm
                  pat_list: [{(Darwin)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:os_name_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(/usr/bin/sw_vers)} {(-productName)})]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [160 164]
                              )
                            }
                          spids: [159]
                        )
                      ]
                      spids: [159]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:os_version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(versions_osVersion)})])
                                left_token: <Left_Backtick '`'>
                                spids: [168 170]
                              )
                            }
                          spids: [167]
                        )
                      ]
                      spids: [167]
                    )
                    (Case
                      to_match: {(${ VSub_Name os_version_)}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(10.4)}
                            {(10.4.) (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '*')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <'Mac OS X Tiger'>)}
                                  spids: [191]
                                )
                              ]
                              spids: [191]
                            )
                          ]
                          spids: [182 189 196 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(10.5)}
                            {(10.5.) (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '*')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <'Mac OS X Leopard'>)}
                                  spids: [208]
                                )
                              ]
                              spids: [208]
                            )
                          ]
                          spids: [199 206 213 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(10.6)}
                            {(10.6.) (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '*')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <'Mac OS X Snow Leopard'>)}
                                  spids: [225]
                                )
                              ]
                              spids: [225]
                            )
                          ]
                          spids: [216 223 230 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(10.7)}
                            {(10.7.) (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '*')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <'Mac OS X Lion'>)}
                                  spids: [242]
                                )
                              ]
                              spids: [242]
                            )
                          ]
                          spids: [233 240 247 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(10.8)}
                            {(10.8.) (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '*')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <'Mac OS X Mountain Lion'>)}
                                  spids: [259]
                                )
                              ]
                              spids: [259]
                            )
                          ]
                          spids: [250 257 264 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(10.9)}
                            {(10.9.) (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '*')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <'Mac OS X Mavericks'>)}
                                  spids: [276]
                                )
                              ]
                              spids: [276]
                            )
                          ]
                          spids: [267 274 281 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(10.10)}
                            {(10.10.) (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '*')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <'Mac OS X Yosemite'>)}
                                  spids: [293]
                                )
                              ]
                              spids: [293]
                            )
                          ]
                          spids: [284 291 298 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(10.11)}
                            {(10.11.) (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '*')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <'Mac OS X El Capitan'>)}
                                  spids: [310]
                                )
                              ]
                              spids: [310]
                            )
                          ]
                          spids: [301 308 315 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(10.12)}
                            {(10.12.) (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '*')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <'macOS Sierra'>)}
                                  spids: [327]
                                )
                              ]
                              spids: [327]
                            )
                          ]
                          spids: [318 325 332 16777215]
                        )
                        (case_arm
                          pat_list: [
                            {(10.13)}
                            {(10.13.) (Lit_Other '[') (0-9) (Lit_Other ']') (Lit_Other '*')}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <'macOS High Sierra'>)}
                                  spids: [344]
                                )
                              ]
                              spids: [344]
                            )
                          ]
                          spids: [335 342 349 16777215]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other '*')}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <macOS>)}
                                  spids: [355]
                                )
                              ]
                              spids: [355]
                            )
                          ]
                          spids: [352 353 360 16777215]
                        )
                      ]
                      spids: [173 179 363]
                    )
                  ]
                  spids: [155 156 366 16777215]
                )
                (case_arm
                  pat_list: [{(FreeBSD)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:os_name_)
                          op: Equal
                          rhs: {(SQ <FreeBSD>)}
                          spids: [372]
                        )
                      ]
                      spids: [372]
                    )
                  ]
                  spids: [369 370 377 16777215]
                )
                (case_arm
                  pat_list: [{(Linux)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:os_name_)
                          op: Equal
                          rhs: {(SQ <Linux>)}
                          spids: [383]
                        )
                      ]
                      spids: [383]
                    )
                  ]
                  spids: [380 381 388 16777215]
                )
                (case_arm
                  pat_list: [{(SunOS)}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (SimpleCommand
                                  words: [{(grep)} {(SQ <OpenSolaris>)} {(/etc/release)}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: 16777215
                                      arg_word: {(/dev/null)}
                                      spids: [405]
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_name_)
                                  op: Equal
                                  rhs: {(SQ <OpenSolaris>)}
                                  spids: [412]
                                )
                              ]
                              spids: [412]
                            )
                          ]
                          spids: [16777215 409]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:os_name_)
                              op: Equal
                              rhs: {(SQ <Solaris>)}
                              spids: [421]
                            )
                          ]
                          spids: [421]
                        )
                      ]
                      spids: [418 427]
                    )
                  ]
                  spids: [391 392 430 16777215]
                )
              ]
              spids: [134 140 433]
            )
            (C {(echo)} {(${ VSub_Name os_name_)})
            (C {(unset)} {(os_name_)} {(os_system_)} {(os_release_)} {(os_version_)})
          ]
          spids: [113]
        )
      spids: [109 112]
    )
    (FuncDef
      name: versions_osVersion
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:os_version_)
                  op: Equal
                  rhs: {(SQ <unrecognized>)}
                  spids: [464]
                )
              ]
              spids: [464]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:os_system_)
                  op: Equal
                  rhs: {(${ VSub_Name UNAME_S)}
                  spids: [470]
                )
              ]
              spids: [470]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:os_release_)
                  op: Equal
                  rhs: {(${ VSub_Name UNAME_R)}
                  spids: [476]
                )
              ]
              spids: [476]
            )
            (Case
              to_match: {(${ VSub_Name os_system_)}
              arms: [
                (case_arm
                  pat_list: [{(CYGWIN_NT-) (Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:os_version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(expr)} {(DQ (${ VSub_Name os_release_))} {(Lit_Other ':')} 
                                        {(SQ <'\\([0-9]*\\.[0-9]\\.[0-9]*\\).*'>)}
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [497 511]
                              )
                            }
                          spids: [496]
                        )
                      ]
                      spids: [496]
                    )
                  ]
                  spids: [491 493 514 16777215]
                )
                (case_arm
                  pat_list: [{(Darwin)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:os_version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(/usr/bin/sw_vers)} {(-productVersion)})]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [522 526]
                              )
                            }
                          spids: [521]
                        )
                      ]
                      spids: [521]
                    )
                  ]
                  spids: [517 518 529 16777215]
                )
                (case_arm
                  pat_list: [{(FreeBSD)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:os_version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(expr)} {(DQ (${ VSub_Name os_release_))} {(Lit_Other ':')} 
                                        {(SQ <'\\([0-9]*\\.[0-9]*\\)-.*'>)}
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [537 551]
                              )
                            }
                          spids: [536]
                        )
                      ]
                      spids: [536]
                    )
                  ]
                  spids: [532 533 554 16777215]
                )
                (case_arm
                  pat_list: [{(Linux)}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-r)} {(DQ (${ VSub_Name LSB_RELEASE))} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (Sentence
                                      child: 
                                        (C {(grep)} {(-q)} {(SQ <'DISTRIB_ID=Ubuntu'>)} 
                                          {(DQ (${ VSub_Name LSB_RELEASE))}
                                        )
                                      terminator: <Op_Semi ';'>
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:os_version_)
                                          op: Equal
                                          rhs: 
                                            {
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (Pipeline
                                                        children: [
                                                          (C {(cat)} {(DQ (${ VSub_Name LSB_RELEASE))})
                                                          (C {(awk)} {(-F) (Lit_Other '=')} 
                                                            {
                                                              (SQ 
                                                                <
'$1~/DISTRIB_DESCRIPTION/{print $2}'
                                                                >
                                                              )
                                                            }
                                                          )
                                                          (C {(sed)} {(SQ <'s/"//g;s/ /-/g'>)})
                                                        ]
                                                        negated: False
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_Backtick '`'>
                                                spids: [604 633]
                                              )
                                            }
                                          spids: [603]
                                        )
                                      ]
                                      spids: [603]
                                    )
                                  ]
                                  spids: [16777215 596]
                                )
                              ]
                              spids: [16777215 636]
                            )
                          ]
                          spids: [16777215 576]
                        )
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} {(-r)} {(SQ </etc/redhat-release>)} 
                                  {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_version_)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [(C {(cat)} {(/etc/redhat-release)})]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [656 660]
                                      )
                                    }
                                  spids: [655]
                                )
                              ]
                              spids: [655]
                            )
                          ]
                          spids: [639 652]
                        )
                      ]
                      spids: [16777215 663]
                    )
                  ]
                  spids: [557 558 666 16777215]
                )
                (case_arm
                  pat_list: [{(SunOS)}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (SimpleCommand
                                  words: [{(grep)} {(SQ <OpenSolaris>)} {(/etc/release)}]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: 16777215
                                      arg_word: {(/dev/null)}
                                      spids: [683]
                                    )
                                  ]
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:os_version_)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (Pipeline
                                                children: [
                                                  (C {(grep)} {(SQ <OpenSolaris>)} {(/etc/release)})
                                                  (C {(awk)} {(SQ <'{print $2"("$3")"}'>)})
                                                ]
                                                negated: False
                                              )
                                            ]
                                          )
                                        left_token: <Left_Backtick '`'>
                                        spids: [691 706]
                                      )
                                    }
                                  spids: [690]
                                )
                              ]
                              spids: [690]
                            )
                          ]
                          spids: [16777215 687]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:major_)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(echo)} {(DQ (${ VSub_Name os_release_))})
                                              (C {(sed)} {(SQ <'s/[0-9]*\\.\\([0-9]*\\)/\\1/'>)})
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_Backtick '`'>
                                    spids: [713 728]
                                  )
                                }
                              spids: [712]
                            )
                          ]
                          spids: [712]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:minor_)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(grep)} {(Solaris)} {(/etc/release)})
                                              (C {(sed)} {(SQ <'s/[^u]*\\(u[0-9]*\\).*/\\1/'>)})
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_Backtick '`'>
                                    spids: [732 745]
                                  )
                                }
                              spids: [731]
                            )
                          ]
                          spids: [731]
                        )
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:os_version_)
                              op: Equal
                              rhs: {(DQ (${ VSub_Name major_) (${ VSub_Name minor_))}
                              spids: [748]
                            )
                          ]
                          spids: [748]
                        )
                      ]
                      spids: [709 759]
                    )
                  ]
                  spids: [669 670 762 16777215]
                )
              ]
              spids: [482 488 765]
            )
            (C {(echo)} {(DQ (${ VSub_Name os_version_))})
            (C {(unset)} {(os_name_)} {(os_release_)} {(os_version_)} {(major_)} {(minor_)})
          ]
          spids: [461]
        )
      spids: [457 460]
    )
    (FuncDef
      name: versions_shellVersion
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:shell_)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [800]
                )
              ]
              spids: [800]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:shell_present_)
                  op: Equal
                  rhs: {(${ VSub_Name FALSE)}
                  spids: [805]
                )
              ]
              spids: [805]
            )
            (Case
              to_match: {(DQ (${ VSub_Name shell_))}
              arms: [
                (case_arm
                  pat_list: [{(ash)}]
                  action: [
                    (AndOr
                      children: [
                        (C {(Lit_Other '[')} {(-x)} {(SQ </bin/busybox>)} {(Lit_Other ']')})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:shell_present_)
                              op: Equal
                              rhs: {(${ VSub_Name TRUE)}
                              spids: [838]
                            )
                          ]
                          spids: [838]
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [822 823 844 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (AndOr
                      children: [
                        (C {(Lit_Other '[')} {(-x)} {(DQ (${ VSub_Name shell_))} {(Lit_Other ']')})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:shell_present_)
                              op: Equal
                              rhs: {(${ VSub_Name TRUE)}
                              spids: [865]
                            )
                          ]
                          spids: [865]
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [847 848 871 16777215]
                )
              ]
              spids: [811 819 874]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(${ VSub_Name shell_present_)} {(-eq)} 
                          {(${ VSub_Name FALSE)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(SQ <'not installed'>)})
                    (ControlFlow
                      token: <ControlFlow_Return return>
                      arg_word: {(${ VSub_Name FALSE)}
                    )
                  ]
                  spids: [16777215 894]
                )
              ]
              spids: [16777215 911]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:version_) op:Equal rhs:{(SQ )} spids:[915])]
              spids: [915]
            )
            (Case
              to_match: {(${ VSub_Name shell_)}
              arms: [
                (case_arm
                  pat_list: [{(Lit_Other '*') (/sh)}]
                  spids: [929 931 962 16777215]
                )
                (case_arm
                  pat_list: [{(ash)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(versions_shell_ash)} {(DQ (${ VSub_Name shell_))})]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [969 977]
                              )
                            }
                          spids: [968]
                        )
                      ]
                      spids: [968]
                    )
                  ]
                  spids: [965 966 979 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*') (/bash)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(versions_shell_bash)} {(DQ (${ VSub_Name shell_))})]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [987 995]
                              )
                            }
                          spids: [986]
                        )
                      ]
                      spids: [986]
                    )
                  ]
                  spids: [982 984 997 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*') (/dash)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(versions_shell_dash)})])
                                left_token: <Left_Backtick '`'>
                                spids: [1018 1020]
                              )
                            }
                          spids: [1017]
                        )
                      ]
                      spids: [1017]
                    )
                  ]
                  spids: [1000 1002 1023 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*') (/ksh)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(versions_shell_ksh)} {(DQ (${ VSub_Name shell_))})]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1031 1039]
                              )
                            }
                          spids: [1030]
                        )
                      ]
                      spids: [1030]
                    )
                  ]
                  spids: [1026 1028 1041 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*') (/pdksh)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(versions_shell_pdksh)} {(DQ (${ VSub_Name shell_))})]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1049 1057]
                              )
                            }
                          spids: [1048]
                        )
                      ]
                      spids: [1048]
                    )
                  ]
                  spids: [1044 1046 1059 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*') (/zsh)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(versions_shell_zsh)} {(DQ (${ VSub_Name shell_))})]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1067 1075]
                              )
                            }
                          spids: [1066]
                        )
                      ]
                      spids: [1066]
                    )
                  ]
                  spids: [1062 1064 1077 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:version_)
                          op: Equal
                          rhs: {(SQ <invalid>)}
                          spids: [1083]
                        )
                      ]
                      spids: [1083]
                    )
                  ]
                  spids: [1080 1081 16777215 1089]
                )
              ]
              spids: [920 926 1089]
            )
            (C {(echo)} 
              {
                (DQ 
                  (BracedVarSub
                    token: <VSub_Name version_>
                    suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(unknown)})
                    spids: [1096 1100]
                  )
                )
              }
            )
            (C {(unset)} {(shell_)} {(version_)})
          ]
          spids: [797]
        )
      spids: [793 796]
    )
    (FuncDef
      name: versions_shell_ash
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (C {(busybox)} {(--help)})
                (C {(head)} {(-1)})
                (C {(sed)} {(SQ <'s/BusyBox v\\([0-9.]*\\) .*/\\1/'>)})
              ]
              negated: False
            )
          ]
          spids: [1120]
        )
      spids: [1116 1119]
    )
    (FuncDef
      name: versions_shell_bash
      body: 
        (BraceGroup
          children: [
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{($ VSub_Number '$1')} {(--version)}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1153])]
                )
                (C {(grep)} {(SQ <'GNU bash'>)})
                (C {(sed)} {(SQ <'s/.*version \\([^ ]*\\).*/\\1/'>)})
              ]
              negated: False
            )
          ]
          spids: [1146]
        )
      spids: [1142 1145]
    )
    (FuncDef
      name: versions_shell_dash
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(eval)} {(dpkg)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {(/dev/null)}
                  spids: [1184]
                )
                (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1187])
              ]
            )
            (AndOr
              children: [
                (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(127)} {(Lit_Other ']')})
                (ControlFlow token:<ControlFlow_Return return>)
              ]
              op_id: Op_DAmp
            )
            (Pipeline
              children: [
                (C {(dpkg)} {(-l)})
                (C {(grep)} {(SQ <' dash '>)})
                (C {(awk)} {(SQ <'{print $3}'>)})
              ]
              negated: False
            )
          ]
          spids: [1177]
        )
      spids: [1173 1176]
    )
    (FuncDef
      name: versions_shell_ksh
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:versions_shell_)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1238]
                )
              ]
              spids: [1238]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:versions_version_)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [1242]
                )
              ]
              spids: [1242]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:versions_version_)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (SimpleCommand
                                            words: [
                                              {(${ VSub_Name versions_shell_)}
                                              {(--version)}
                                              {(Lit_Other ':')}
                                            ]
                                            redirects: [
                                              (Redir
                                                op_id: Redir_GreatAnd
                                                fd: 2
                                                arg_word: {(1)}
                                                spids: [1264]
                                              )
                                            ]
                                          )
                                        ]
                                      )
                                    left_token: <Left_Backtick '`'>
                                    spids: [1255 1266]
                                  )
                                }
                              spids: [1254]
                            )
                          ]
                          spids: [1254]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:versions_version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {(DQ (${ VSub_Name versions_version_))})
                                          (C {(sed)} 
                                            {
                                              (SQ 
                                                <
's/.*\\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\\).*/\\1/'
                                                >
                                              )
                                            }
                                          )
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1273 1290]
                              )
                            }
                          spids: [1272]
                        )
                      ]
                      spids: [1272]
                    )
                  ]
                  spids: [16777215 1269]
                )
              ]
              spids: [16777215 1293]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name versions_version_))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(_versions_have_strings)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:versions_version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (SimpleCommand
                                            words: [{(strings)} {(DQ (${ VSub_Name versions_shell_))}]
                                            redirects: [
                                              (Redir
                                                op_id: Redir_GreatAnd
                                                fd: 2
                                                arg_word: {(1)}
                                                spids: [1327]
                                              )
                                            ]
                                          )
                                          (C {(grep)} {(Version)})
                                          (C {(sed)} 
                                            {
                                              (SQ 
                                                <
's/^.*Version \\(.*\\)$/\\1/;s/ s+ \\$$//;s/ /-/g'
                                                >
                                              )
                                            }
                                          )
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1318 1345]
                              )
                            }
                          spids: [1317]
                        )
                      ]
                      spids: [1317]
                    )
                  ]
                  spids: [16777215 1311]
                )
              ]
              spids: [16777215 1348]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name versions_version_))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:versions_version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(versions_shell_pdksh)} {(DQ (${ VSub_Name versions_shell_))})
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1370 1378]
                              )
                            }
                          spids: [1369]
                        )
                      ]
                      spids: [1369]
                    )
                  ]
                  spids: [16777215 1366]
                )
              ]
              spids: [16777215 1381]
            )
            (C {(echo)} {(DQ (${ VSub_Name versions_version_))})
            (C {(unset)} {(versions_shell_)} {(versions_version_)})
          ]
          spids: [1235]
        )
      spids: [1231 1234]
    )
    (FuncDef
      name: versions_shell_pdksh
      body: 
        (BraceGroup
          children: [
            (C {(_versions_have_strings)})
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(strings)} {(DQ ($ VSub_Number '$1'))}]
                  redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1419])]
                )
                (C {(grep)} {(SQ <'PD KSH'>)})
                (C {(sed)} {(-e)} {(SQ <'s/.*PD KSH \\(.*\\)/\\1/;s/ /-/g'>)})
              ]
              negated: False
            )
          ]
          spids: [1407]
        )
      spids: [1403 1406]
    )
    (FuncDef
      name: versions_shell_zsh
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:versions_shell_)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [1452]
                )
              ]
              spids: [1452]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:versions_version_)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(SQ <'echo ${ZSH_VERSION}'>)})
                                  (C {(${ VSub_Name versions_shell_)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [1466 1477]
                      )
                    }
                  spids: [1465]
                )
              ]
              spids: [1465]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(-z)} {(DQ (${ VSub_Name versions_version_))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:versions_version_)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (SimpleCommand
                                            words: [{(${ VSub_Name versions_shell_)} {(--version)}]
                                            redirects: [
                                              (Redir
                                                op_id: Redir_GreatAnd
                                                fd: 2
                                                arg_word: {(1)}
                                                spids: [1507]
                                              )
                                            ]
                                          )
                                          (C {(awk)} {(SQ <'{print $2}'>)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1500 1516]
                              )
                            }
                          spids: [1499]
                        )
                      ]
                      spids: [1499]
                    )
                  ]
                  spids: [16777215 1496]
                )
              ]
              spids: [16777215 1519]
            )
            (C {(echo)} {(DQ (${ VSub_Name versions_version_))})
            (C {(unset)} {(versions_shell_)} {(versions_version_)})
          ]
          spids: [1449]
        )
      spids: [1445 1448]
    )
    (FuncDef
      name: _versions_have_strings
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(Lit_Other '[')} {(${ VSub_Name __versions_haveStrings)} {(-ne)} 
                  {(${ VSub_Name ERROR)} {(Lit_Other ']')}
                )
                (ControlFlow token:<ControlFlow_Return return>)
              ]
              op_id: Op_DAmp
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(eval)} {(strings)} {(/dev/null)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 16777215
                              arg_word: {(/dev/null)}
                              spids: [1578]
                            )
                            (Redir
                              op_id: Redir_GreatAnd
                              fd: 2
                              arg_word: {(1)}
                              spids: [1581]
                            )
                          ]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:__versions_haveStrings)
                          op: Equal
                          rhs: {(${ VSub_Name TRUE)}
                          spids: [1588]
                        )
                      ]
                      spids: [1588]
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [16777215 1585]
                )
              ]
              spids: [16777215 1597]
            )
            (SimpleCommand
              words: [{(echo)} {(SQ <'WARN: strings not installed. try installing binutils?'>)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[1607])]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:__versions_haveStrings)
                  op: Equal
                  rhs: {(${ VSub_Name FALSE)}
                  spids: [1611]
                )
              ]
              spids: [1611]
            )
          ]
          spids: [1548]
        )
      spids: [1544 1547]
    )
    (FuncDef
      name: versions_main
      body: 
        (BraceGroup
          children: [
            (C {(set)} {(-u)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:os_name)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(versions_osName)})])
                        left_token: <Left_Backtick '`'>
                        spids: [1637 1639]
                      )
                    }
                  spids: [1636]
                )
              ]
              spids: [1636]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:os_version)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(versions_osVersion)})])
                        left_token: <Left_Backtick '`'>
                        spids: [1643 1645]
                      )
                    }
                  spids: [1642]
                )
              ]
              spids: [1642]
            )
            (C {(echo)} {(DQ ('os: ') (${ VSub_Name os_name) (' version: ') (${ VSub_Name os_version))})
            (ForEach
              iter_name: shell
              iter_words: [{(${ VSub_Name VERSIONS_SHELLS)}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:shell_version)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(versions_shellVersion)} {(DQ (${ VSub_Name shell))})]
                                  )
                                left_token: <Left_Backtick '`'>
                                spids: [1678 1686]
                              )
                            }
                          spids: [1677]
                        )
                      ]
                      spids: [1677]
                    )
                    (C {(echo)} 
                      {
                        (DQ ('shell: ') (${ VSub_Name shell) (' version: ') (${ VSub_Name shell_version))
                      }
                    )
                  ]
                  spids: [1674 1703]
                )
              spids: [1668 1672]
            )
          ]
          spids: [1623]
        )
      spids: [1619 1622]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(DQ (${ VSub_Name ARGV0))} {(Lit_Other '=')} {(SQ <versions>)} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(versions_main)} {(DQ ($ VSub_At '$@'))})]
          spids: [16777215 1727]
        )
      ]
      spids: [16777215 1736]
    )
  ]
)