(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:'Test git check-ref-format' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: valid_ref
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:prereq)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [22]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [
                    {(Id.Lit_LBracket '[') (A-Z) (Id.KW_Bang '!') (Id.Lit_RBracket ']') 
                      (Id.Lit_Star '*')
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:prereq)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [40]
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                  spids: [32 37 -1 47]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:desc)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ("ref name '") ($ Id.VSub_Number '$1') ("' is valid") 
                        (braced_var_sub
                          token: (Token id:Id.VSub_Number val:2 span_id:56)
                          suffix_op: 
                            (suffix_op.Unary
                              op_id: Id.VTest_ColonPlus
                              arg_word: {(' with options ') ($ Id.VSub_Number '$2')}
                            )
                        )
                      )
                    }
                  spids: [50]
                )
              ]
            )
            (C {(test_expect_success)} {($ Id.VSub_DollarName '$prereq')} 
              {(DQ ($ Id.VSub_DollarName '$desc'))} 
              {
                (DQ ('\n') ('\t\tgit check-ref-format ') ($ Id.VSub_Number '$2') (" '") 
                  ($ Id.VSub_Number '$1') ("'\n") ('\t')
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: invalid_ref
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:prereq)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [91]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [
                    {(Id.Lit_LBracket '[') (A-Z) (Id.KW_Bang '!') (Id.Lit_RBracket ']') 
                      (Id.Lit_Star '*')
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:prereq)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [109]
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                  spids: [101 106 -1 116]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:desc)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ("ref name '") ($ Id.VSub_Number '$1') ("' is invalid") 
                        (braced_var_sub
                          token: (Token id:Id.VSub_Number val:2 span_id:125)
                          suffix_op: 
                            (suffix_op.Unary
                              op_id: Id.VTest_ColonPlus
                              arg_word: {(' with options ') ($ Id.VSub_Number '$2')}
                            )
                        )
                      )
                    }
                  spids: [119]
                )
              ]
            )
            (C {(test_expect_success)} {($ Id.VSub_DollarName '$prereq')} 
              {(DQ ($ Id.VSub_DollarName '$desc'))} 
              {
                (DQ ('\n') ('\t\ttest_must_fail git check-ref-format ') ($ Id.VSub_Number '$2') (" '") 
                  ($ Id.VSub_Number '$1') ("'\n") ('\t')
                )
              }
            )
          ]
        )
    )
    (C {(invalid_ref)} {(SQ )})
    (C {(invalid_ref)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:/ span_id:165))})
    (C {(invalid_ref)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:/ span_id:174))} 
      {(--allow-onelevel)}
    )
    (C {(invalid_ref)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:/ span_id:185))} 
      {(--normalize)}
    )
    (C {(invalid_ref)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:/ span_id:196))} 
      {(SQ (Token id:Id.Lit_Chars val:'--allow-onelevel --normalize' span_id:200))}
    )
    (C {(valid_ref)} {(SQ (Token id:Id.Lit_Chars val:foo/bar/baz span_id:206))})
    (C {(valid_ref)} {(SQ (Token id:Id.Lit_Chars val:foo/bar/baz span_id:212))} {(--normalize)})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:refs///heads/foo span_id:220))})
    (C {(valid_ref)} {(SQ (Token id:Id.Lit_Chars val:refs///heads/foo span_id:226))} {(--normalize)})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:heads/foo/ span_id:234))})
    (C {(invalid_ref)} {(Id.KW_Bang '!') (MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:/heads/foo span_id:243))}
    )
    (C {(valid_ref)} {(Id.KW_Bang '!') (MINGW)} {(SQ (Token id:Id.Lit_Chars val:/heads/foo span_id:252))} 
      {(--normalize)}
    )
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:///heads/foo span_id:260))})
    (C {(valid_ref)} {(SQ (Token id:Id.Lit_Chars val:///heads/foo span_id:266))} {(--normalize)})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:./foo span_id:274))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:./foo/bar span_id:280))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:foo/./bar span_id:286))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:foo/bar/. span_id:292))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:.refs/foo span_id:298))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:refs/heads/foo. span_id:304))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:heads/foo..bar span_id:310))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:'heads/foo?bar' span_id:316))})
    (C {(valid_ref)} {(SQ (Token id:Id.Lit_Chars val:foo./bar span_id:322))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:heads/foo.lock span_id:328))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:heads///foo.lock span_id:334))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:foo.lock/bar span_id:340))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:foo.lock///bar span_id:346))})
    (C {(valid_ref)} {(SQ (Token id:Id.Lit_Chars val:'heads/foo@bar' span_id:352))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:'heads/v@{ation' span_id:358))})
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:'heads/foo\\bar' span_id:364))})
    (C {(invalid_ref)} 
      {
        (DQ 
          (command_sub
            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:370)
            command_list: 
              (command.CommandList
                children: [(C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'heads/foo\\t' span_id:374))})]
              )
          )
        )
      }
    )
    (C {(invalid_ref)} 
      {
        (DQ 
          (command_sub
            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:382)
            command_list: 
              (command.CommandList
                children: [
                  (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'heads/foo\\177' span_id:386))})
                ]
              )
          )
        )
      }
    )
    (C {(valid_ref)} 
      {
        (DQ 
          (command_sub
            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:394)
            command_list: 
              (command.CommandList
                children: [
                  (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'heads/fu\\303\\237' span_id:398))})
                ]
              )
          )
        )
      }
    )
    (C {(valid_ref)} {(SQ (Token id:Id.Lit_Chars val:'heads/*foo/bar' span_id:406))} 
      {(--refspec-pattern)}
    )
    (C {(valid_ref)} {(SQ (Token id:Id.Lit_Chars val:'heads/foo*/bar' span_id:414))} 
      {(--refspec-pattern)}
    )
    (C {(valid_ref)} {(SQ (Token id:Id.Lit_Chars val:'heads/f*o/bar' span_id:422))} 
      {(--refspec-pattern)}
    )
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:'heads/f*o*/bar' span_id:430))} 
      {(--refspec-pattern)}
    )
    (C {(invalid_ref)} {(SQ (Token id:Id.Lit_Chars val:'heads/foo*/bar*' span_id:438))} 
      {(--refspec-pattern)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ref)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:foo span_id:446))}
          spids: [444]
        )
      ]
    )
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --allow-onelevel' span_id:478))}
    )
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--normalize)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--allow-onelevel --normalize' span_id:496))}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ref)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:foo/bar span_id:502))}
          spids: [500]
        )
      ]
    )
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --allow-onelevel' span_id:534))}
    )
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--normalize)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ref)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'foo/*' span_id:548))}
          spids: [546]
        )
      ]
    )
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))})
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --allow-onelevel' span_id:580))}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ref)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'*/foo' span_id:586))}
          spids: [584]
        )
      ]
    )
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))})
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --allow-onelevel' span_id:618))}
    )
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--normalize)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --normalize' span_id:636))}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ref)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'foo/*/bar' span_id:642))}
          spids: [640]
        )
      ]
    )
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))})
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --allow-onelevel' span_id:674))}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ref)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'*' span_id:680))}
          spids: [678]
        )
      ]
    )
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))})
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--allow-onelevel)})
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(valid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --allow-onelevel' span_id:712))}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ref)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'foo/*/*' span_id:718))}
          spids: [716]
        )
      ]
    )
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --allow-onelevel' span_id:736))}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ref)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'*/foo/*' span_id:742))}
          spids: [740]
        )
      ]
    )
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --allow-onelevel' span_id:760))}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ref)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'*/*/foo' span_id:766))}
          spids: [764]
        )
      ]
    )
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--refspec-pattern)})
    (C {(invalid_ref)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --allow-onelevel' span_id:784))}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ref)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:/foo span_id:790))}
          spids: [788]
        )
      ]
    )
    (C {(invalid_ref)} {(Id.KW_Bang '!') (MINGW)} {(DQ ($ Id.VSub_DollarName '$ref'))})
    (C {(invalid_ref)} {(Id.KW_Bang '!') (MINGW)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(--allow-onelevel)}
    )
    (C {(invalid_ref)} {(Id.KW_Bang '!') (MINGW)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(--refspec-pattern)}
    )
    (C {(invalid_ref)} {(Id.KW_Bang '!') (MINGW)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --allow-onelevel' span_id:834))}
    )
    (C {(invalid_ref)} {(Id.KW_Bang '!') (MINGW)} {(DQ ($ Id.VSub_DollarName '$ref'))} {(--normalize)})
    (C {(valid_ref)} {(Id.KW_Bang '!') (MINGW)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--allow-onelevel --normalize' span_id:858))}
    )
    (C {(invalid_ref)} {(Id.KW_Bang '!') (MINGW)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --normalize' span_id:871))}
    )
    (C {(valid_ref)} {(Id.KW_Bang '!') (MINGW)} {(DQ ($ Id.VSub_DollarName '$ref'))} 
      {(SQ (Token id:Id.Lit_Chars val:'--refspec-pattern --allow-onelevel --normalize' span_id:884))}
    )
    (C {(test_expect_success)} {(DQ ('check-ref-format --branch @{-1}'))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:895) 
          (Token id:Id.Lit_Chars val:'\tT=$(git write-tree) &&\n' span_id:896) (Token id:Id.Lit_Chars val:'\tsha1=$(echo A | git commit-tree $T) &&\n' span_id:897) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-ref refs/heads/master $sha1 &&\n'
            span_id: 898
          ) (Token id:Id.Lit_Chars val:'\tgit update-ref refs/remotes/origin/master $sha1 &&\n' span_id:899) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:900) (Token id:Id.Lit_Chars val:'\tgit checkout origin/master &&\n' span_id:901) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:902) (Token id:Id.Lit_Chars val:'\trefname=$(git check-ref-format --branch @{-1}) &&\n' span_id:903) 
          (Token id:Id.Lit_Chars val:'\ttest "$refname" = "$sha1" &&\n' span_id:904) (Token id:Id.Lit_Chars val:'\trefname2=$(git check-ref-format --branch @{-2}) &&\n' span_id:905) 
          (Token id:Id.Lit_Chars val:'\ttest "$refname2" = master' span_id:906)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'check-ref-format --branch from subdir' span_id:913))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:917) 
          (Token id:Id.Lit_Chars val:'\tmkdir subdir &&\n' span_id:918) (Token id:Id.Lit_Chars val:'\n' span_id:919) 
          (Token id:Id.Lit_Chars val:'\tT=$(git write-tree) &&\n' span_id:920) (Token id:Id.Lit_Chars val:'\tsha1=$(echo A | git commit-tree $T) &&\n' span_id:921) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-ref refs/heads/master $sha1 &&\n'
            span_id: 922
          ) (Token id:Id.Lit_Chars val:'\tgit update-ref refs/remotes/origin/master $sha1 &&\n' span_id:923) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:924) (Token id:Id.Lit_Chars val:'\tgit checkout origin/master &&\n' span_id:925) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:926) (Token id:Id.Lit_Chars val:'\trefname=$(\n' span_id:927) 
          (Token id:Id.Lit_Chars val:'\t\tcd subdir &&\n' span_id:928) (Token id:Id.Lit_Chars val:'\t\tgit check-ref-format --branch @{-1}\n' span_id:929) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:930) (Token id:Id.Lit_Chars val:'\ttest "$refname" = "$sha1"\n' span_id:931)
        )
      }
    )
    (command.ShFunction
      name: valid_ref_normalized
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:prereq)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [942]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [
                    {(Id.Lit_LBracket '[') (A-Z) (Id.KW_Bang '!') (Id.Lit_RBracket ']') 
                      (Id.Lit_Star '*')
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:prereq)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [960]
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                  spids: [952 957 -1 967]
                )
              ]
            )
            (C {(test_expect_success)} {($ Id.VSub_DollarName '$prereq')} 
              {
                (DQ ("ref name '") ($ Id.VSub_Number '$1') ("' simplifies to '") ($ Id.VSub_Number '$2') 
                  ("'")
                )
              } 
              {
                (DQ ('\n') ('\t\trefname=') 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:985)
                  ) ("(git check-ref-format --normalize '") ($ Id.VSub_Number '$1') ("') &&\n") ('\t\ttest ') 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:990)
                  ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:991)) (refname) 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:993)
                  ) (" = '") ($ Id.VSub_Number '$2') ("'\n") ('\t')
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: invalid_ref_normalized
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:prereq)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [1009]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [
                    {(Id.Lit_LBracket '[') (A-Z) (Id.KW_Bang '!') (Id.Lit_RBracket ']') 
                      (Id.Lit_Star '*')
                    }
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:prereq)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [1027]
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                  spids: [1019 1024 -1 1034]
                )
              ]
            )
            (C {(test_expect_success)} {($ Id.VSub_DollarName '$prereq')} 
              {(DQ ("check-ref-format --normalize rejects '") ($ Id.VSub_Number '$1') ("'"))} 
              {
                (DQ ('\n') ("\t\ttest_must_fail git check-ref-format --normalize '") 
                  ($ Id.VSub_Number '$1') ("'\n") ('\t')
                )
              }
            )
          ]
        )
    )
    (C {(valid_ref_normalized)} {(SQ (Token id:Id.Lit_Chars val:heads/foo span_id:1061))} 
      {(SQ (Token id:Id.Lit_Chars val:heads/foo span_id:1065))}
    )
    (C {(valid_ref_normalized)} {(SQ (Token id:Id.Lit_Chars val:refs///heads/foo span_id:1071))} 
      {(SQ (Token id:Id.Lit_Chars val:refs/heads/foo span_id:1075))}
    )
    (C {(valid_ref_normalized)} {(Id.KW_Bang '!') (MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:/heads/foo span_id:1084))} {(SQ (Token id:Id.Lit_Chars val:heads/foo span_id:1088))}
    )
    (C {(valid_ref_normalized)} {(SQ (Token id:Id.Lit_Chars val:///heads/foo span_id:1094))} 
      {(SQ (Token id:Id.Lit_Chars val:heads/foo span_id:1098))}
    )
    (C {(invalid_ref_normalized)} {(SQ (Token id:Id.Lit_Chars val:foo span_id:1104))})
    (C {(invalid_ref_normalized)} {(Id.KW_Bang '!') (MINGW)} 
      {(SQ (Token id:Id.Lit_Chars val:/foo span_id:1113))}
    )
    (C {(invalid_ref_normalized)} {(SQ (Token id:Id.Lit_Chars val:heads/foo/../bar span_id:1119))})
    (C {(invalid_ref_normalized)} {(SQ (Token id:Id.Lit_Chars val:heads/./foo span_id:1125))})
    (C {(invalid_ref_normalized)} {(SQ (Token id:Id.Lit_Chars val:'heads\\foo' span_id:1131))})
    (C {(invalid_ref_normalized)} {(SQ (Token id:Id.Lit_Chars val:heads/foo.lock span_id:1137))})
    (C {(invalid_ref_normalized)} {(SQ (Token id:Id.Lit_Chars val:heads///foo.lock span_id:1143))})
    (C {(invalid_ref_normalized)} {(SQ (Token id:Id.Lit_Chars val:foo.lock/bar span_id:1149))})
    (C {(invalid_ref_normalized)} {(SQ (Token id:Id.Lit_Chars val:foo.lock///bar span_id:1155))})
    (C {(test_done)})
  ]
)