(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 reflog interaction with detached HEAD' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: reset_state
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(git)} {(checkout)} {(master)})
                (C {(cp)} {(saved_reflog)} {(.git/logs/HEAD)})
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m initial &&\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'\tgit branch side &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:49) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit --allow-empty -m second &&\n'
            span_id: 50
          ) (Token id:Id.Lit_Chars val:'\tcat .git/logs/HEAD >saved_reflog\n' span_id:51)
        )
      }
    )
    (C {(test_expect_success)} {(baseline)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\treset_state &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\tgit rev-parse master master^ >expect &&\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\tgit log -g --format=%H >actual &&\n' span_id:63) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:64)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'switch to branch' span_id:71))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\treset_state &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\tgit rev-parse side master master^ >expect &&\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\tgit log -g --format=%H >actual &&\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:80)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'detach to other' span_id:87))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\treset_state &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\tgit rev-parse master side master master^ >expect &&\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\tgit checkout master^0 &&\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\tgit log -g --format=%H >actual &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:97)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'detach to self' span_id:104))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\treset_state &&\n' span_id:109) (Token id:Id.Lit_Chars val:'\tgit rev-parse master master master^ >expect &&\n' span_id:110) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master^0 &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\tgit log -g --format=%H >actual &&\n' span_id:112) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:113)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'attach to self' span_id:120))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:124) 
          (Token id:Id.Lit_Chars val:'\treset_state &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\tgit rev-parse master master master master^ >expect &&\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master^0 &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:128) 
          (Token id:Id.Lit_Chars val:'\tgit log -g --format=%H >actual &&\n' span_id:129) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:130)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'attach to other' span_id:137))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:141) 
          (Token id:Id.Lit_Chars val:'\treset_state &&\n' span_id:142) (Token id:Id.Lit_Chars val:'\tgit rev-parse side master master master^ >expect &&\n' span_id:143) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master^0 &&\n' span_id:144) (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:145) 
          (Token id:Id.Lit_Chars val:'\tgit log -g --format=%H >actual &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:147)
        )
      }
    )
    (C {(test_done)})
  ]
)