(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: 
            {
              (SQ 
                (Token
                  id: Id.Lit_Chars
                  val: 'compare address parsing with and without Mail::Address'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (command.Pipeline children:[(C {(test_have_prereq)} {(PERL)})] negated:T)
              terminator: (Token id:Id.Op_Semi val:';' span_id:21)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skip_all)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (SQ 
                        (Token
                          id: Id.Lit_Chars
                          val: 'skipping perl interface tests, perl not available'
                          span_id: 28
                        )
                      )
                    }
                  spids: [26]
                )
              ]
            )
            (C {(test_done)})
          ]
          spids: [14 23]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(perl)} {(-MTest) (Id.Lit_Other ':') (Id.Lit_Other ':') (More)} {(-e)} {(0)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'2>' span_id:48)
              fd: 2
              arg_word: {(/dev/null)}
            )
          ]
        )
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skip_all)
                  op: assign_op.Equal
                  rhs: {(DQ ('Perl Test::More unavailable, skipping test'))}
                  spids: [56]
                )
              ]
            )
            (C {(test_done)})
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(perl)} {(-MMail) (Id.Lit_Other ':') (Id.Lit_Other ':') (Address)} {(-e)} {(0)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'2>' span_id:78)
              fd: 2
              arg_word: {(/dev/null)}
            )
          ]
        )
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skip_all)
                  op: assign_op.Equal
                  rhs: {(DQ ('Perl Mail::Address unavailable, skipping test'))}
                  spids: [86]
                )
              ]
            )
            (C {(test_done)})
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_external_has_tap)
          op: assign_op.Equal
          rhs: {(1)}
          spids: [97]
        )
      ]
    )
    (C {(test_external_without_stderr)} 
      {(SQ (Token id:Id.Lit_Chars val:'Perl address parsing function' span_id:106))} {(perl)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/t9000/test.pl)}
    )
    (C {(test_done)})
  ]
)