(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TEST1)
          op: assign_op.Equal
          rhs: {<3222243>}
          spids: [44]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TEST2)
          op: assign_op.Equal
          rhs: {<1005600000>}
          spids: [50]
        )
      ]
    )
    (command.ShFunction
      name: check
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<format_string>} {<exp_output_1>} {<exp_output_2>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:format_string)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Number 1)}
                  spids: [74]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:exp_output_1)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Number 2)}
                  spids: [80]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:exp_output_2)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Number 3)}
                  spids: [86]
                )
              ]
            )
            (C {<atf_check>} {<-o>} 
              {(DQ <'inline:'> (${ Id.VSub_Name exp_output_1) <Id.Lit_BadBackslash '\\'> <n>)} {<date>} {<-r>} {(${ Id.VSub_Name TEST1)} 
              {<Id.Lit_Other '+'> <Id.Lit_Other '%'> (${ Id.VSub_Name format_string)}
            )
            (C {<atf_check>} {<-o>} 
              {(DQ <'inline:'> (${ Id.VSub_Name exp_output_2) <Id.Lit_BadBackslash '\\'> <n>)} {<date>} {<-r>} {(${ Id.VSub_Name TEST2)} 
              {<Id.Lit_Other '+'> <Id.Lit_Other '%'> (${ Id.VSub_Name format_string)}
            )
          ]
        )
    )
    (command.ShFunction
      name: format_string_test
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<desc>} {<exp_output_1>} {<exp_output_2>} {<flag>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:desc)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Number 1)}
                  spids: [174]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:flag)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Number 2)}
                  spids: [180]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:exp_output_1)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Number 3)}
                  spids: [186]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:exp_output_2)
                  op: assign_op.Equal
                  rhs: {(${ Id.VSub_Number 4)}
                  spids: [192]
                )
              ]
            )
            (C {<atf_test_case>} {(${ Id.VSub_Name desc) <_test>})
            (C {<eval>} 
              {
                (DQ <'\n'> (${ Id.VSub_Name desc) <'_test_body() {\n'> <'\tcheck '> 
                  (${ Id.VSub_Name flag) <' \''> (${ Id.VSub_Name exp_output_1) <'\' \''> (${ Id.VSub_Name exp_output_2) <'\';\n'> <'}'>
                )
              }
            )
            (C {<atf_add_test_case>} {(${ Id.VSub_Name desc) <_test>})
          ]
        )
    )
    (command.ShFunction
      name: atf_init_test_cases
      body: 
        (BraceGroup
          children: [
            (C {<format_string_test>} {<A>} {<A>} {<Saturday>} {<Monday>})
            (C {<format_string_test>} {<a>} {<a>} {<Sat>} {<Mon>})
            (C {<format_string_test>} {<B>} {<B>} {<February>} {<November>})
            (C {<format_string_test>} {<b>} {<b>} {<Feb>} {<Nov>})
            (C {<format_string_test>} {<C>} {<C>} {<19>} {<20>})
            (C {<format_string_test>} {<c>} {<c>} {(DQ <'Sat Feb  7 07:04:03 1970'>)} 
              {(DQ <'Mon Nov 12 21:20:00 2001'>)}
            )
            (C {<format_string_test>} {<D>} {<D>} {<'02/07/70'>} {<'11/12/01'>})
            (C {<format_string_test>} {<d>} {<d>} {<07>} {<12>})
            (C {<format_string_test>} {<e>} {<e>} {(DQ <' 7'>)} {<12>})
            (C {<format_string_test>} {<F>} {<F>} {(DQ <1970-02-07>)} {(DQ <2001-11-12>)})
            (C {<format_string_test>} {<G>} {<G>} {<1970>} {<2001>})
            (C {<format_string_test>} {<g>} {<g>} {<70>} {<01>})
            (C {<format_string_test>} {<H>} {<H>} {<07>} {<21>})
            (C {<format_string_test>} {<h>} {<h>} {<Feb>} {<Nov>})
            (C {<format_string_test>} {<I>} {<I>} {<07>} {<09>})
            (C {<format_string_test>} {<j>} {<j>} {<038>} {<316>})
            (C {<format_string_test>} {<k>} {<k>} {(DQ <' 7'>)} {<21>})
            (C {<format_string_test>} {<l>} {<l>} {(DQ <' 7'>)} {(DQ <' 9'>)})
            (C {<format_string_test>} {<M>} {<M>} {<04>} {<20>})
            (C {<format_string_test>} {<m>} {<m>} {<02>} {<11>})
            (C {<format_string_test>} {<p>} {<p>} {<AM>} {<PM>})
            (C {<format_string_test>} {<R>} {<R>} {<07> <Id.Lit_Colon ':'> <04>} 
              {<21> <Id.Lit_Colon ':'> <20>}
            )
            (C {<format_string_test>} {<r>} {<r>} {(DQ <'07:04:03 AM'>)} {(DQ <'09:20:00 PM'>)})
            (C {<format_string_test>} {<S>} {<S>} {<03>} {<00>})
            (C {<format_string_test>} {<s>} {<s>} {(${ Id.VSub_Name TEST1)} {(${ Id.VSub_Name TEST2)})
            (C {<format_string_test>} {<U>} {<U>} {<05>} {<45>})
            (C {<format_string_test>} {<u>} {<u>} {<6>} {<1>})
            (C {<format_string_test>} {<V>} {<V>} {<06>} {<46>})
            (C {<format_string_test>} {<v>} {<v>} {(DQ <' 7-Feb-1970'>)} {(DQ <12-Nov-2001>)})
            (C {<format_string_test>} {<W>} {<W>} {<05>} {<46>})
            (C {<format_string_test>} {<w>} {<w>} {<6>} {<1>})
            (C {<format_string_test>} {<X>} {<X>} {(DQ <'07:04:03'>)} {(DQ <'21:20:00'>)})
            (C {<format_string_test>} {<x>} {<x>} {(DQ <'02/07/70'>)} {(DQ <'11/12/01'>)})
            (C {<format_string_test>} {<Y>} {<Y>} {<1970>} {<2001>})
            (C {<format_string_test>} {<y>} {<y>} {<70>} {<01>})
            (C {<format_string_test>} {<Z>} {<Z>} {<UTC>} {<UTC>})
            (C {<format_string_test>} {<z>} {<z>} {<Id.Lit_Other '+'> <0000>} {<Id.Lit_Other '+'> <0000>})
            (C {<format_string_test>} {<percent>} {<Id.Lit_Other '%'>} {<Id.Lit_Other '%'>} 
              {<Id.Lit_Other '%'>}
            )
            (C {<format_string_test>} {<plus>} {<Id.Lit_Other '+'>} 
              {(DQ <'Sat Feb  7 07:04:03 UTC 1970'>)} {(DQ <'Mon Nov 12 21:20:00 UTC 2001'>)}
            )
          ]
        )
    )
  ]
)