(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:gpg_version)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Simple
                        words: [{(gpg)} {(--version)}]
                        redirects: [
                          (redir.Redir
                            op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:10)
                            fd: 2
                            arg_word: {(1)}
                          )
                        ]
                      )
                    ]
                  )
              )
            }
          spids: [4]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test)} {($ Id.VSub_QMark '$?')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(127)})]
          action: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$gpg_version'))}
              arms: [
                (case_arm
                  pat_list: [
                    {(SQ (Token id:Id.Lit_Chars val:'gpg (GnuPG) 1.0.6' span_id:50)) 
                      (Id.Lit_Star '*')
                    }
                  ]
                  action: [(C {(say)} {(DQ ('Your version of gpg (1.0.6) is too buggy for testing'))})]
                  spids: [49 53 63 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
                      children: [
                        (C {(mkdir)} {(./gpghome)})
                        (C {(chmod)} {(0700)} {(./gpghome)})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:GNUPGHOME)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:152)
                                      command_list: (command.CommandList children:[(C {(pwd)})])
                                    ) (/gpghome)
                                  )
                                }
                              spids: [150]
                            )
                          ]
                        )
                        (C {(export)} {(GNUPGHOME)})
                        (command.Simple
                          words: [
                            {(gpg)}
                            {(--homedir)}
                            {(DQ (${ Id.VSub_Name GNUPGHOME))}
                            {(--import)}
                            {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-gpg/keyring.gpg)}
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'2>' span_id:178)
                              fd: 2
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                        (command.Simple
                          words: [
                            {(gpg)}
                            {(--homedir)}
                            {(DQ (${ Id.VSub_Name GNUPGHOME))}
                            {(--import-ownertrust)}
                            {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-gpg/ownertrust)}
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'2>' span_id:203)
                              fd: 2
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                        (command.Simple
                          words: [
                            {(gpg)}
                            {(--homedir)}
                            {(DQ (${ Id.VSub_Name GNUPGHOME))}
                            {(--sign)}
                            {(-u)}
                            {(committer) (Id.Lit_Splice '@example') (.com)}
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Less val:'<' span_id:228)
                              fd: -1
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:231)
                              fd: -1
                              arg_word: {(/dev/null)}
                            )
                            (redir.Redir
                              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:234)
                              fd: 2
                              arg_word: {(1)}
                            )
                          ]
                        )
                        (C {(test_set_prereq)} {(GPG)})
                      ]
                    )
                  ]
                  spids: [66 67 255 -1]
                )
              ]
            )
          ]
          spids: [14 25]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test_have_prereq)} {(GPG)})
                (command.Pipeline
                  children: [
                    (C {(echo)})
                    (command.Simple
                      words: [
                        {(gpg)}
                        {(--homedir)}
                        {(DQ (${ Id.VSub_Name GNUPGHOME))}
                        {(-b)}
                        {(--rfc1991)}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:290)
                          fd: -1
                          arg_word: {(/dev/null)}
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:293)
                          fd: 2
                          arg_word: {(1)}
                        )
                      ]
                    )
                  ]
                  negated: F
                )
              ]
            )
          ]
          action: [(C {(test_set_prereq)} {(RFC1991)})]
          spids: [263 296]
        )
      ]
    )
    (command.ShFunction
      name: sanitize_pgp
      body: 
        (command.BraceGroup
          children: [
            (C {(perl)} {(-ne)} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:318) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\t/^-----END PGP/ and $in_pgp = 0;\n'
                    span_id: 319
                  ) (Token id:Id.Lit_Chars val:'\t\tprint unless $in_pgp;\n' span_id:320) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\t/^-----BEGIN PGP/ and $in_pgp = 1;\n'
                    span_id: 321
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:322)
                )
              }
            )
          ]
        )
    )
  ]
)