(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:'tests for ref^{stuff}' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:18))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\techo blob >a-blob &&\n' span_id:23) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit tag -a -m blob blob-tag $(git hash-object -w a-blob) &&\n'
            span_id: 24
          ) (Token id:Id.Lit_Chars val:'\tmkdir a-tree &&\n' span_id:25) 
          (Token
            id: Id.Lit_Chars
            val: '\techo moreblobs >a-tree/another-blob &&\n'
            span_id: 26
          ) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\tTREE_SHA1=$(git write-tree) &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tgit tag -a -m tree tree-tag "$TREE_SHA1" &&\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m Initial &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\tgit tag -a -m commit commit-tag &&\n' span_id:31) 
          (Token id:Id.Lit_Chars val:'\tgit branch ref &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\techo modified >>a-blob &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m Modified &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit branch modref &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\techo changed! >>a-blob &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m !Exp &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\tgit branch expref &&\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\techo changed >>a-blob &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:43) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m Changed &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\techo changed-again >>a-blob &&\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\tgit commit -m Changed-again\n' span_id:47)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{non-existent}' span_id:54))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:58) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse ref^{non-existent}\n'
            span_id: 59
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{}' span_id:66))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse ref >expected &&\n' span_id:71) (Token id:Id.Lit_Chars val:'\tgit rev-parse ref^{} >actual &&\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\tgit rev-parse commit-tag^{} >actual &&\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:75)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{commit}' span_id:82))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:86) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse ref >expected &&\n' span_id:87) (Token id:Id.Lit_Chars val:'\tgit rev-parse ref^{commit} >actual &&\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\tgit rev-parse commit-tag^{commit} >actual &&\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse tree-tag^{commit} &&\n' span_id:92) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse blob-tag^{commit}\n'
            span_id: 93
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{tree}' span_id:100))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'\techo $TREE_SHA1 >expected &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\tgit rev-parse ref^{tree} >actual &&\n' span_id:106) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\tgit rev-parse commit-tag^{tree} >actual &&\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:109) (Token id:Id.Lit_Chars val:'\tgit rev-parse tree-tag^{tree} >actual &&\n' span_id:110) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse blob-tag^{tree}\n' span_id:112)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{tag}' span_id:119))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:123) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse HEAD^{tag} &&\n'
            span_id: 124
          ) (Token id:Id.Lit_Chars val:'\tgit rev-parse commit-tag >expected &&\n' span_id:125) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-parse commit-tag^{tag} >actual &&\n'
            span_id: 126
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:127)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{/.}' span_id:134))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:138) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse master >expected &&\n' span_id:139) (Token id:Id.Lit_Chars val:'\tgit rev-parse master^{/.} >actual &&\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:141)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{/non-existent}' span_id:148))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:152) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse master^{/non-existent}\n'
            span_id: 153
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{/Initial}' span_id:160))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:164) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse ref >expected &&\n' span_id:165) (Token id:Id.Lit_Chars val:'\tgit rev-parse master^{/Initial} >actual &&\n' span_id:166) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:167)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{/!Exp}' span_id:174))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:178) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse master^{/!Exp}\n'
            span_id: 179
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{/!}' span_id:186))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:190) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse master^{/!}\n'
            span_id: 191
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{/!!Exp}' span_id:198))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:202) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse expref >expected &&\n' span_id:203) (Token id:Id.Lit_Chars val:'\tgit rev-parse master^{/!!Exp} >actual &&\n' span_id:204) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:205)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{/!-}' span_id:212))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:216) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse master^{/!-}\n'
            span_id: 217
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{/!-.}' span_id:224))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:228) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse master^{/!-.}\n'
            span_id: 229
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{/!-non-existent}' span_id:236))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:240) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse master >expected &&\n' span_id:241) (Token id:Id.Lit_Chars val:'\tgit rev-parse master^{/!-non-existent} >actual &&\n' span_id:242) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:243)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{/!-Changed}' span_id:250))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:254) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse expref >expected &&\n' span_id:255) (Token id:Id.Lit_Chars val:'\tgit rev-parse master^{/!-Changed} >actual &&\n' span_id:256) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:257)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ref^{/!-!Exp}' span_id:264))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:268) 
          (Token id:Id.Lit_Chars val:'\tgit rev-parse modref >expected &&\n' span_id:269) (Token id:Id.Lit_Chars val:'\tgit rev-parse expref^{/!-!Exp} >actual &&\n' span_id:270) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:271)
        )
      }
    )
    (C {(test_done)})
  ]
)