(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:'diff hunk header truncation' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:N)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e' span_id:17))}
          spids: [15]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:N1)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'\xe6\x97\xa5' span_id:22))}
          spids: [20]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:N2)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'\xe6\x97\xa5\xe6\x9c\xac' span_id:27))}
          spids: [25]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NS)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$N') ($ Id.VSub_DollarName '$N') ($ Id.VSub_DollarName '$N') 
                ($ Id.VSub_DollarName '$N') ($ Id.VSub_DollarName '$N') ($ Id.VSub_DollarName '$N') ($ Id.VSub_DollarName '$N') 
                ($ Id.VSub_DollarName '$N') ($ Id.VSub_DollarName '$N') ($ Id.VSub_DollarName '$N') ($ Id.VSub_DollarName '$N') 
                ($ Id.VSub_DollarName '$N') ($ Id.VSub_DollarName '$N')
              )
            }
          spids: [30]
        )
      ]
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:53) (Token id:Id.Lit_Chars val:'\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:55) (Token id:Id.Lit_Chars val:'\t\techo "A $NS"\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\t\tfor c in B C D E F G H I J K\n' span_id:57) (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:58) 
          (Token id:Id.Lit_Chars val:'\t\t\techo "  $c"\n' span_id:59) (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\t\techo "L  $NS"\n' span_id:61) (Token id:Id.Lit_Chars val:'\t\tfor c in M N O P Q R S T U V\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:63) (Token id:Id.Lit_Chars val:'\t\t\techo "  $c"\n' span_id:64) 
          (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:65) (Token id:Id.Lit_Chars val:'\t) >file &&\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\n' span_id:68) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -e "/^  [EP]/s/$/ modified/" <file >file+ &&\n'
            span_id: 69
          ) (Token id:Id.Lit_Chars val:'\tmv file+ file\n' span_id:70) (Token id:Id.Lit_Chars val:'\n' span_id:71)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'hunk header truncation with an overly long line' span_id:78))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:82) (Token id:Id.Lit_Chars val:'\n' span_id:83) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff | sed -n -e "s/^.*@@//p" >actual &&\n'
            span_id: 84
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:85) 
          (Token id:Id.Lit_Chars val:'\t\techo " A $N$N$N$N$N$N$N$N$N2"\n' span_id:86) (Token id:Id.Lit_Chars val:'\t\techo " L  $N$N$N$N$N$N$N$N$N1"\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\ttest_cmp actual expected\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\n' span_id:90)
        )
      }
    )
    (C {(test_done)})
  ]
)