(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]}) (Com {[LIT_CHARS .]} {[DQ [VarSub TEST_DIRECTORY]] [LIT_CHARS /lib-submodule-update.sh]}) (FunctionDef git_bisect [] (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS status]} {[LIT_CHARS -su]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS -1pR]} {[LIT_OTHER "*"]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} >"> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS tar]} {[LIT_CHARS cf]} {[DQ [VarSub TRASH_DIRECTORY][LIT_CHARS /tmp.tar]]} {[LIT_OTHER "*"]}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('GOOD', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[DQ [VarSub 1]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS foo]]} < (FilenameRedirectNode filename={[LIT_CHARS bar]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS add]} {[LIT_CHARS bar]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS "bisect bad"]]}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('BAD', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS reset]} {[LIT_CHARS --hard]} {[LIT_CHARS HEAD] [LIT_OTHER "^"] [LIT_OTHER "^"]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS submodule]} {[LIT_CHARS update]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS bisect]} {[LIT_CHARS start]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS bisect]} {[LIT_CHARS good]} {[VarSub GOOD]}) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[LIT_OTHER "*"]}) (AndOr OP_AND_IF (Com {[LIT_CHARS tar]} {[LIT_CHARS xf]} {[DQ [VarSub TRASH_DIRECTORY][LIT_CHARS /tmp.tar]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS status]} {[LIT_CHARS -su]} < (FilenameRedirectNode filename={[LIT_CHARS actual]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS ls]} {[LIT_CHARS -1pR]} {[LIT_OTHER "*"]} < (FilenameRedirectNode filename={[LIT_CHARS actual]} >"> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS test_cmp]} {[LIT_CHARS expect]} {[LIT_CHARS actual]}) (Com {[LIT_CHARS git]} {[LIT_CHARS bisect]} {[LIT_CHARS bad]} {[VarSub BAD]}) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) (Com {[LIT_CHARS test_submodule_switch]} {[DQ [LIT_CHARS git_bisect]]}) (Com {[LIT_CHARS test_done]}) )