(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>}) ) ) } ) ] ) ) ] )