(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:'overly long paths' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:19) 
          (Token
            id: Id.Lit_Chars
            val: '\tp=filefilefilefilefilefilefilefile &&\n'
            span_id: 20
          ) (Token id:Id.Lit_Chars val:'\tp=$p$p$p$p$p$p$p$p$p$p$p$p$p$p$p$p &&\n' span_id:21) 
          (Token
            id: Id.Lit_Chars
            val: '\tp=$p$p$p$p$p$p$p$p$p$p$p$p$p$p$p$p &&\n'
            span_id: 22
          ) (Token id:Id.Lit_Chars val:'\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\tpath_a=${p}_a &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tpath_z=${p}_z &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\n' span_id:26) (Token id:Id.Lit_Chars val:'\tblob_a=$(echo frotz | git hash-object -w --stdin) &&\n' span_id:27) 
          (Token
            id: Id.Lit_Chars
            val: '\tblob_z=$(echo nitfol | git hash-object -w --stdin) &&\n'
            span_id: 28
          ) (Token id:Id.Lit_Chars val:'\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tpat="100644 %s 0\\t%s\\n"\n' span_id:30)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'overly-long path by itself is not a problem' span_id:37))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\tprintf "$pat" "$blob_a" "$path_a" |\n' span_id:42) (Token id:Id.Lit_Chars val:'\tgit update-index --add --index-info &&\n' span_id:43) 
          (Token id:Id.Lit_Chars val:'\techo "$path_a" >expect &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\tgit ls-files >actual &&\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:46)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'overly-long path does not replace another by mistake'
            span_id: 53
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:57) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "$pat" "$blob_a" "$path_a" "$blob_z" "$path_z" |\n'
            span_id: 58
          ) (Token id:Id.Lit_Chars val:'\tgit update-index --add --index-info &&\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\techo "$path_a"\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\t\techo "$path_z"\n' span_id:62) (Token id:Id.Lit_Chars val:'\t) >expect &&\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files >actual &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:65)
        )
      }
    )
    (C {(test_done)})
  ]
)