(command.CommandList
  children: [
    (C {<set>} {<-u>})
    (C {<set>} {<-e>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:disabled_by_default_progs)
          op: assign_op.Equal
          rhs: {(SQ <'\n'> <'    arch\n'> <'    hostname\n'>)}
          spids: [49]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:build_if_possible_progs)
          op: assign_op.Equal
          rhs: 
            {
              (SQ <'\n'> <'    chroot\n'> <'    df\n'> <'    hostid\n'> <'    libstdbuf.so\n'> 
                <'    nice\n'> <'    pinky\n'> <'    stdbuf\n'> <'    stty\n'> <'    uptime\n'> <'    users\n'> <'    who\n'>
              )
            }
          spids: [63]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:normal_progs)
          op: assign_op.Equal
          rhs: 
            {
              (SQ <'\n'> <'    [\n'> <'    base64\n'> <'    basename\n'> <'    cat\n'> <'    chcon\n'> 
                <'    chgrp\n'> <'    chmod\n'> <'    chown\n'> <'    cksum\n'> <'    comm\n'> <'    cp\n'> <'    csplit\n'> <'    cut\n'> 
                <'    date\n'> <'    dd\n'> <'    dir\n'> <'    dircolors\n'> <'    dirname\n'> <'    du\n'> <'    echo\n'> <'    env\n'> 
                <'    expand\n'> <'    expr\n'> <'    factor\n'> <'    false\n'> <'    fmt\n'> <'    fold\n'> <'    ginstall\n'> 
                <'    groups\n'> <'    head\n'> <'    id\n'> <'    join\n'> <'    kill\n'> <'    link\n'> <'    ln\n'> <'    logname\n'> 
                <'    ls\n'> <'    md5sum\n'> <'    mkdir\n'> <'    mkfifo\n'> <'    mknod\n'> <'    mktemp\n'> <'    mv\n'> 
                <'    nl\n'> <'    nproc\n'> <'    nohup\n'> <'    numfmt\n'> <'    od\n'> <'    paste\n'> <'    pathchk\n'> 
                <'    pr\n'> <'    printenv\n'> <'    printf\n'> <'    ptx\n'> <'    pwd\n'> <'    readlink\n'> <'    realpath\n'> 
                <'    rm\n'> <'    rmdir\n'> <'    runcon\n'> <'    seq\n'> <'    sha1sum\n'> <'    sha224sum\n'> <'    sha256sum\n'> 
                <'    sha384sum\n'> <'    sha512sum\n'> <'    shred\n'> <'    shuf\n'> <'    sleep\n'> <'    sort\n'> <'    split\n'> 
                <'    stat\n'> <'    sum\n'> <'    sync\n'> <'    tac\n'> <'    tail\n'> <'    tee\n'> <'    test\n'> <'    timeout\n'> 
                <'    touch\n'> <'    tr\n'> <'    true\n'> <'    truncate\n'> <'    tsort\n'> <'    tty\n'> <'    uname\n'> 
                <'    unexpand\n'> <'    uniq\n'> <'    unlink\n'> <'    vdir\n'> <'    wc\n'> <'    whoami\n'> <'    yes\n'>
              )
            }
          spids: [86]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:me)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [(C {<echo>} {(DQ ($ Id.VSub_Number '$0'))}) (C {<sed>} {(SQ <'s,.*/,,'>)})]
                    negated: F
                  )
              )
            }
          spids: [185]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:msg)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'Automatically generated by '> ($ Id.VSub_DollarName '$me') 
                <'.  DO NOT EDIT BY HAND!'>
              )
            }
          spids: [204]
        )
      ]
    )
    (command.Case
      to_match: {($ Id.VSub_Pound '$#') <Id.Lit_Comma ','> ($ Id.VSub_Number '$1')}
      arms: [
        (case_arm
          pat_list: [{<1> <Id.Lit_Comma ','> <--autoconf>} {<1> <Id.Lit_Comma ','> <--for-autoconf>}]
          action: [
            (C {<echo>} {(DQ <'dnl '> ($ Id.VSub_DollarName '$msg'))})
            (command.ForEach
              iter_name: p
              iter_words: [{($ Id.VSub_DollarName '$normal_progs')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<x> (DQ ($ Id.VSub_DollarName '$p'))} {<Id.Lit_Equals '='>} 
                          {<x> (DQ <'['>)}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:p)
                              op: assign_op.Equal
                              rhs: {(SQ <'@<:@'>)}
                              spids: [267]
                            )
                          ]
                        )
                      ]
                    )
                    (C {<echo>} 
                      {
                        (DQ <'gl_ADD_PROG([optional_bin_progs], ['> ($ Id.VSub_DollarName '$p') <'])'>)
                      }
                    )
                  ]
                )
            )
            (C {<echo>} 
              {
                (DQ <'no_install_progs_default=\''> 
                  (command_sub
                    left_token: <Id.Left_Backtick '`'>
                    child: (C {<echo>} {($ Id.VSub_DollarName '$disabled_by_default_progs')})
                  ) <'\''>
                )
              }
            )
            (command.Simple
              words: [{<sed>} {(SQ <'s/^ *//'>)}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<END>}
                      here_end_span_id: 362
                      stdin_parts: [
                        <'        # Given the name of a variable containing a space-separated\n'>
                        <'        # list of install-by-default programs and the actual list of\n'>
                        <
'        # do-not-install-by-default programs, modify the former variable\n'
                        >
                        <'        # to reflect any '>
                        <Id.Right_DoubleQuote '"'>
                        <do-install>
                        <Id.Right_DoubleQuote '"'>
                        <' and '>
                        <Id.Right_DoubleQuote '"'>
                        <'don\'t-install'>
                        <Id.Right_DoubleQuote '"'>
                        <' requests.\n'>
                        <
'        # That is, add any program specified via --enable-install-program,\n'
                        >
                        <
'        # and remove any program specified via --enable-no-install-program.\n'
                        >
                        <'        # Note how the second argument below is a literal, with '>
                        <Id.Right_DoubleQuote '"'>
                        <','>
                        <Id.Right_DoubleQuote '"'>
                        <'\n'>
                        <
'        # separators.  That is required due to the way the macro works,\n'
                        >
                        <'        # and since the corresponding ./configure option argument is\n'>
                        <'        # comma-separated on input.\n'>
                        <'        gl_INCLUDE_EXCLUDE_PROG([optional_bin_progs], ['>
                        (command_sub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<echo>} {($ Id.VSub_DollarName '$disabled_by_default_progs')})
                                (C {<sed>} {(SQ <'s/ /,/g'>)})
                              ]
                              negated: F
                            )
                        )
                        <'])\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          spids: [221 228 364 -1]
        )
        (case_arm
          pat_list: [{<1> <Id.Lit_Comma ','> <--automake>} {<1> <Id.Lit_Comma ','> <--for-automake>}]
          action: [
            (C {<echo>} {(DQ <'## '> ($ Id.VSub_DollarName '$msg'))})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:progsdir)
                  op: assign_op.Equal
                  rhs: {<src>}
                  spids: [385]
                )
              ]
            )
            (C {<echo>} {<no_install__progs>} {<Id.Lit_Equals '='>})
            (command.ForEach
              iter_name: p
              iter_words: [{($ Id.VSub_DollarName '$disabled_by_default_progs')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} {<no_install__progs>} {<Id.Lit_Other '+'> <Id.Lit_Equals '='>} 
                      {($ Id.VSub_DollarName '$progsdir') <'/'> ($ Id.VSub_DollarName '$p')}
                    )
                  ]
                )
            )
            (C {<echo>} {<build_if_possible__progs>} {<Id.Lit_Equals '='>})
            (command.ForEach
              iter_name: p
              iter_words: [{($ Id.VSub_DollarName '$build_if_possible_progs')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} {<build_if_possible__progs>} {<Id.Lit_Other '+'> <Id.Lit_Equals '='>} 
                      {($ Id.VSub_DollarName '$progsdir') <'/'> ($ Id.VSub_DollarName '$p')}
                    )
                  ]
                )
            )
            (C {<echo>} {<default__progs>} {<Id.Lit_Equals '='>})
            (command.ForEach
              iter_name: p
              iter_words: [{($ Id.VSub_DollarName '$normal_progs')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<echo>} {<default__progs>} {<Id.Lit_Other '+'> <Id.Lit_Equals '='>} 
                      {($ Id.VSub_DollarName '$progsdir') <'/'> ($ Id.VSub_DollarName '$p')}
                    )
                  ]
                )
            )
          ]
          spids: [367 374 491 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.Sentence
              child: 
                (command.Simple
                  words: [{<echo>} {(DQ ($ Id.VSub_Number '$0') <': invalid usage'>)}]
                  redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})
          ]
          spids: [494 495 514 -1]
        )
      ]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)