(command.CommandList
  children: [
    (C {<Id.Lit_Colon ':'>} {<included>} {<from>} {<t2016>} {<and>} {<others>})
    (C {<.>} {<'./test-lib.sh'>})
    (command.ShFunction
      name: set_state
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.Simple
                  words: [{<echo>} {(DQ ($ Id.VSub_Number '$3'))}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_Number '$1'))}
                    )
                  ]
                  do_fork: T
                )
                (C {<git>} {<add>} {(DQ ($ Id.VSub_Number '$1'))})
                (command.Simple
                  words: [{<echo>} {(DQ ($ Id.VSub_Number '$2'))}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_Number '$1'))}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: save_state
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:noslash)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))})
                                    (C {<tr>} {<'/'>} {<_>})
                                  ]
                                  negated: F
                                )
                            )
                          )
                        }
                      spids: [75]
                    )
                  ]
                )
                (command.Simple
                  words: [{<cat>} {(DQ ($ Id.VSub_Number '$1'))}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<_worktree_> (DQ ($ Id.VSub_DollarName '$noslash'))}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  words: [{<git>} {<show>} {<Id.Lit_Colon ':'> (DQ ($ Id.VSub_Number '$1'))}]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<_index_> (DQ ($ Id.VSub_DollarName '$noslash'))}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: set_and_save_state
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<set_state>} {(DQ ($ Id.VSub_At '$@'))})
                (C {<save_state>} {(DQ ($ Id.VSub_Number '$1'))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: verify_state
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<cat>} {(DQ ($ Id.VSub_Number '$1'))})
                      )
                    )
                  } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number '$2'))}
                )
                (C {<test>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<git>} {<show>} {<Id.Lit_Colon ':'> (DQ ($ Id.VSub_Number '$1'))})
                      )
                    )
                  } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number '$3'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: verify_saved_state
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:noslash)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))})
                                    (C {<tr>} {<'/'>} {<_>})
                                  ]
                                  negated: F
                                )
                            )
                          )
                        }
                      spids: [219]
                    )
                  ]
                )
                (C {<verify_state>} {(DQ ($ Id.VSub_Number '$1'))} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<cat>} {<_worktree_> (DQ ($ Id.VSub_DollarName '$noslash'))})
                      )
                    )
                  } 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<cat>} {<_index_> (DQ ($ Id.VSub_DollarName '$noslash'))})
                      )
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: save_head
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [{<git>} {<rev-parse>} {<HEAD>}]
              redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<_head>})]
              do_fork: T
            )
          ]
        )
    )
    (command.ShFunction
      name: verify_saved_head
      body: 
        (BraceGroup
          children: [
            (C {<test>} 
              {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<cat>} {<_head>})))} {<Id.Lit_Equals '='>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<git>} {<rev-parse>} {<HEAD>})
                  )
                )
              }
            )
          ]
        )
    )
  ]
)