(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'Test string list functionality'>)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (C {(.)} {(./test-lib.sh)})
    (FuncDef
      name: test_split
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (SimpleCommand
                  words: [{(cat)}]
                  redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expected)} spids:[34])]
                )
                (C {(test_expect_success)} 
                  {
                    (DQ ('split ') ($ VSub_Number '$1') (' at ') ($ VSub_Number '$2') (', max ') 
                      ($ VSub_Number '$3')
                    )
                  } 
                  {
                    (DQ ('\n') ("\t\ttest-string-list split '") ($ VSub_Number '$1') ("' '") 
                      ($ VSub_Number '$2') ("' '") ($ VSub_Number '$3') ("' >actual &&\n") ('\t\ttest_cmp expected actual &&\n') 
                      ("\t\ttest-string-list split_in_place '") ($ VSub_Number '$1') ("' '") ($ VSub_Number '$2') ("' '") ($ VSub_Number '$3') ("' >actual &&\n") 
                      ('\t\ttest_cmp expected actual\n') ('\t')
                    )
                  }
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [29]
        )
      spids: [24 28]
    )
    (SimpleCommand
      words: [{(test_split)} {(DQ ('foo:bar:baz'))} {(DQ (':'))} {(DQ (-1))}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('3\n') ('[0]: ') (Right_DoubleQuote '"') (foo) (Right_DoubleQuote '"') ('\n') ('[1]: ') 
                (Right_DoubleQuote '"') (bar) (Right_DoubleQuote '"') ('\n') ('[2]: ') (Right_DoubleQuote '"') (baz) (Right_DoubleQuote '"') ('\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [89]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_split)} {(DQ ('foo:bar:baz'))} {(DQ (':'))} {(DQ (0))}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('1\n') ('[0]: ') (Right_DoubleQuote '"') ('foo:bar:baz') (Right_DoubleQuote '"') ('\n'))
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [124]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_split)} {(DQ ('foo:bar:baz'))} {(DQ (':'))} {(DQ (1))}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('2\n') ('[0]: ') (Right_DoubleQuote '"') (foo) (Right_DoubleQuote '"') ('\n') ('[1]: ') 
                (Right_DoubleQuote '"') ('bar:baz') (Right_DoubleQuote '"') ('\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [149]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_split)} {(DQ ('foo:bar:baz'))} {(DQ (':'))} {(DQ (2))}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('3\n') ('[0]: ') (Right_DoubleQuote '"') (foo) (Right_DoubleQuote '"') ('\n') ('[1]: ') 
                (Right_DoubleQuote '"') (bar) (Right_DoubleQuote '"') ('\n') ('[2]: ') (Right_DoubleQuote '"') (baz) (Right_DoubleQuote '"') ('\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [179]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_split)} {(DQ ('foo:bar:'))} {(DQ (':'))} {(DQ (-1))}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('3\n') ('[0]: ') (Right_DoubleQuote '"') (foo) (Right_DoubleQuote '"') ('\n') ('[1]: ') 
                (Right_DoubleQuote '"') (bar) (Right_DoubleQuote '"') ('\n') ('[2]: ') (Right_DoubleQuote '"') (Right_DoubleQuote '"') ('\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [214]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_split)} {(DQ )} {(DQ (':'))} {(DQ (-1))}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ('1\n') ('[0]: ') (Right_DoubleQuote '"') (Right_DoubleQuote '"') ('\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [247]
        )
      ]
    )
    (SimpleCommand
      words: [{(test_split)} {(DQ (':'))} {(DQ (':'))} {(DQ (-1))}]
      redirects: [
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ('2\n') ('[0]: ') (Right_DoubleQuote '"') (Right_DoubleQuote '"') ('\n') ('[1]: ') 
                (Right_DoubleQuote '"') (Right_DoubleQuote '"') ('\n')
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [271]
        )
      ]
    )
    (C {(test_expect_success)} {(DQ ('test filter_string_list'))} 
      {
        (SQ <'\n'> <'\ttest "x-" = "x$(test-string-list filter - y)" &&\n'> 
          <'\ttest "x-" = "x$(test-string-list filter no y)" &&\n'> <'\ttest yes = "$(test-string-list filter yes y)" &&\n'> 
          <'\ttest yes = "$(test-string-list filter no:yes y)" &&\n'> <'\ttest yes = "$(test-string-list filter yes:no y)" &&\n'> 
          <'\ttest y1:y2 = "$(test-string-list filter y1:y2 y)" &&\n'> <'\ttest y2:y1 = "$(test-string-list filter y2:y1 y)" &&\n'> 
          <'\ttest "x-" = "x$(test-string-list filter x1:x2 y)"\n'>
        )
      }
    )
    (C {(test_expect_success)} {(DQ ('test remove_duplicates'))} 
      {
        (SQ <'\n'> <'\ttest "x-" = "x$(test-string-list remove_duplicates -)" &&\n'> 
          <'\ttest "x" = "x$(test-string-list remove_duplicates "")" &&\n'> <'\ttest a = "$(test-string-list remove_duplicates a)" &&\n'> 
          <'\ttest a = "$(test-string-list remove_duplicates a:a)" &&\n'> <'\ttest a = "$(test-string-list remove_duplicates a:a:a:a:a)" &&\n'> 
          <'\ttest a:b = "$(test-string-list remove_duplicates a:b)" &&\n'> <'\ttest a:b = "$(test-string-list remove_duplicates a:a:b)" &&\n'> 
          <'\ttest a:b = "$(test-string-list remove_duplicates a:b:b)" &&\n'> <'\ttest a:b:c = "$(test-string-list remove_duplicates a:b:c)" &&\n'> 
          <'\ttest a:b:c = "$(test-string-list remove_duplicates a:a:b:c)" &&\n'> <'\ttest a:b:c = "$(test-string-list remove_duplicates a:b:b:c)" &&\n'> 
          <'\ttest a:b:c = "$(test-string-list remove_duplicates a:b:c:c)" &&\n'> <'\ttest a:b:c = "$(test-string-list remove_duplicates a:a:b:b:c:c)" &&\n'> 
          <'\ttest a:b:c = "$(test-string-list remove_duplicates a:a:a:b:b:b:c:c:c)"\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)