(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PATH)
          op: assign_op.Equal
          rhs: {<Id.Lit_Colon ':'> <'/bin'> <Id.Lit_Colon ':'> <'/usr/bin'>}
          spids: [8]
        )
      ]
    )
    (C {<export>} {<PATH>})
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:CC) op:assign_op.Equal rhs:{<cc>} spids:[22])]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ARCH)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<arch>}))}
          spids: [26]
        )
      ]
    )
    (C {<echo>} {<-n>} {(DQ <'Shell test  2 '>)})
    (C {<rm>} {<-rf>} {<DIR_SH2>})
    (C {<mkdir>} {<DIR_SH2>})
    (C {<cd>} {<DIR_SH2>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<file>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 72
              stdin_parts: [
                <'The time has come the walrus said to talk of many things\n'>
                <'Of shoes and ships and sealing wax of cabbages and kings\n'>
                <'Of why the sea is boiling hot and whether pigs have wings\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:f) op:assign_op.Equal rhs:{<file>} spids:[73])]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<makefile>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 96
              stdin_parts: [
                <'all:\tx.c\n'>
                <'\t@'>
                ($ Id.VSub_DollarName '$CC')
                <' x.c >/dev/null 2>&1\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x.c>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 126
              stdin_parts: [
                <'#include <stdio.h>\n'>
                <'char s[] = {'>
                <Id.Right_DoubleQuote '"'>
                <'MS-DOS: Just say no'>
                <Id.Right_DoubleQuote '"'>
                <'};\t/* used by strings later */\n'>
                <'main() \n'>
                <'{\n'>
                <'  int i; \n'>
                <'  for (i = 15; i < 18; i++) printf('>
                <Id.Right_DoubleQuote '"'>
                <'%d'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>)
                <n>
                <Id.Right_DoubleQuote '"'>
                <',i*i);\n'>
                <'}\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 143
              stdin_parts: [<'225\n'> <'256\n'> <'289\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<make>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {<-f>} {<a.out>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [147 156]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Compilation>} {<failed>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Simple
      words: [{<a.out>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(command.Sentence child:(C {<test>} {<-f>} {<x>}) terminator:<Id.Op_Semi _>)]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [178 187]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<No>} {<compiler>} {<output>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<x>} {<answer>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [206 217]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<cc>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Simple
      words: [{<echo>} {<Hi>} {<there>} {<folks>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(command.Sentence child:(C {<test>} {<-r>} {<x>}) terminator:<Id.Op_Semi _>)]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [255 264]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<on>} {<chmod>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (C {<chmod>} {<377>} {<x>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(command.Sentence child:(C {<test>} {<-r>} {<x>}) terminator:<Id.Op_Semi _>)]
            )
          action: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<test>} {<-w>} {<'/'>})
                    (C {<echo>} {<Error>} {<on>} {<chmod>} {<test>} {<2>})
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          spids: [293 302]
        )
      ]
    )
    (C {<chmod>} {<700>} {<x>})
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(command.Sentence child:(C {<test>} {<-r>} {<x>}) terminator:<Id.Op_Semi _>)]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [333 342]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<on>} {<chmod>} {<test>} {<3>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 385
              stdin_parts: [
                <'1 white bunny\n'>
                <'2 gray  rabbits\n'>
                <'3 brown hares\n'>
                <'4 black conies\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 403
              stdin_parts: [<'white\n'> <'gray \n'> <'brown\n'> <'black\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cut>} {<-c>} {<3-7>} {<x>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<y>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<y>} {<answer>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [419 430]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<cut>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Simple
      words: [
        {<dd>}
        {<Id.Lit_VarLike 'if='> ($ Id.VSub_DollarName '$f')}
        {<Id.Lit_VarLike 'of='> <x>}
        {<Id.Lit_VarLike 'bs='> <12>}
        {<Id.Lit_VarLike 'count='> <1>}
      ]
      redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [
        {<dd>}
        {<Id.Lit_VarLike 'if='> ($ Id.VSub_DollarName '$f')}
        {<Id.Lit_VarLike 'of='> <y>}
        {<Id.Lit_VarLike 'bs='> <6>}
        {<Id.Lit_VarLike 'count='> <4>}
        {<Id.Lit_VarLike 'skip='> <2>}
      ]
      redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>} {<x>} {<y>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<z>})]
      do_fork: T
    )
    (command.Simple
      words: [
        {<dd>}
        {<Id.Lit_VarLike 'if='> ($ Id.VSub_DollarName '$f')}
        {<Id.Lit_VarLike 'of='> <answer>}
        {<Id.Lit_VarLike 'bs='> <9>}
        {<Id.Lit_VarLike 'count='> <4>}
      ]
      redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<z>} {<answer>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [532 543]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<dd>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (C {<rm>} {<Id.Lit_QMark '?'>})
    (command.Simple
      words: [{<df>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(command.Sentence child:(C {<test>} {<-r>} {<x>}) terminator:<Id.Op_Semi _>)]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [579 588]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<df>} {<Test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (C {<rm>} {<Id.Lit_QMark '?'>})
    (command.Simple
      words: [{<du>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(command.Sentence child:(C {<test>} {<-r>} {<x>}) terminator:<Id.Op_Semi _>)]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [624 633]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<du>} {<Test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {<head>} {<-1>} {($ Id.VSub_DollarName '$f')})
        (command.Simple
          words: [{<od>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$ARCH')} {<Id.Lit_Equals '='>} {<i86>} 
                  {<-o>} {($ Id.VSub_DollarName '$ARCH')} {<Id.Lit_Equals '='>} {<i386>} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<END>}
                      here_end_span_id: 711
                      stdin_parts: [
                        <'0000000 064124 020145 064564 062555 064040 071541 061440 066557\n'>
                        <'0000020 020145 064164 020145 060567 071154 071565 071440 064541\n'>
                        <'0000040 020144 067564 072040 066141 020153 063157 066440 067141\n'>
                        <'0000060 020171 064164 067151 071547 000012\n'>
                        <'0000071\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          spids: [675 695]
        )
      ]
      else_action: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<END>}
                  here_end_span_id: 728
                  stdin_parts: [
                    <'0000000 052150 062440 072151 066545 020150 060563 020143 067555\n'>
                    <'0000020 062440 072150 062440 073541 066162 072563 020163 060551\n'>
                    <'0000040 062040 072157 020164 060554 065440 067546 020155 060556\n'>
                    <'0000060 074440 072150 064556 063563 005000\n'>
                    <'0000071\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<x>} {<answer>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [732 743]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<od>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {<head>} {<-1>} {($ Id.VSub_DollarName '$f')})
        (command.Simple
          words: [{<od>} {<-d>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$ARCH')} {<Id.Lit_Equals '='>} {<i86>} 
                  {<-o>} {($ Id.VSub_DollarName '$ARCH')} {<Id.Lit_Equals '='>} {<i386>} {<Id.Lit_RBracket ']'>}
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<END>}
                      here_end_span_id: 820
                      stdin_parts: [
                        <'0000000 26708 08293 26996 25965 26656 29537 25376 28015\n'>
                        <'0000020 08293 26740 08293 24951 29292 29557 29472 26977\n'>
                        <'0000040 08292 28532 29728 27745 08299 26223 27936 28257\n'>
                        <'0000060 08313 26740 28265 29543 00010\n'>
                        <'0000071\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
          spids: [784 804]
        )
      ]
      else_action: [
        (command.Simple
          words: [{<cat>}]
          redirects: [
            (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
            (redir
              op: <Id.Redir_DLess '<<'>
              loc: (redir_loc.Fd fd:0)
              arg: 
                (redir_param.HereDoc
                  here_begin: {<END>}
                  here_end_span_id: 837
                  stdin_parts: [
                    <'0000000 21608 25888 29801 28005 08296 24947 08291 28525\n'>
                    <'0000020 25888 29800 25888 30561 27762 30067 08307 24937\n'>
                    <'0000040 25632 29807 08308 24940 27424 28518 08301 24942\n'>
                    <'0000060 31008 29800 26990 26483 02560\n'>
                    <'0000071\n'>
                  ]
                )
            )
          ]
          do_fork: T
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<x>} {<answer>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [841 852]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<od>} {<test>} {<2>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 891
              stdin_parts: [<'red\n'> <'green\n'> <'blue\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<y>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 905
              stdin_parts: [<'rood\n'> <'groen\n'> <'blauw\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 918
              stdin_parts: [<'red\trood\n'> <'green\tgroen\n'> <'blue\tblauw\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<paste>} {<x>} {<y>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<z>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<z>} {<answer>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [929 940]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<paste>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Simple
      words: [{<echo>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 984
              stdin_parts: [
                <Id.Right_DoubleQuote '"'>
                <'Hi,'>
                <Id.Right_DoubleQuote '"'>
                <' said Carol, laughing, '>
                <Id.Right_DoubleQuote '"'>
                <'How\'s life?'>
                <Id.Right_DoubleQuote '"'>
                <'\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<echo>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 1001
              stdin_parts: [<'hi\n'> <'said\n'> <'carol\n'> <'laughing\n'> <'how\'s\n'> <'life\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<x>} {<answer>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1003 1014]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<prep>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Simple
      words: [{<printenv>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{<grep>} {<HOME>} {<x>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1046 1058]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<printenv>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{<grep>} {<PATH>} {<x>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1081 1093]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<printenv>} {<test>} {<2>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{<grep>} {<SHELL>} {<x>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1116 1128]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<printenv>} {<test>} {<3>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      words: [{<grep>} {<USER>} {<x>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1151 1163]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<printenv>} {<test>} {<4>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Simple
      words: [{<pwd>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<Pwd_file>})]
      do_fork: T
    )
    (C {<cd>} {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))})
    (command.Simple
      words: [{<pwd>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<test>} {<-s>} {<Pwd_file>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1208 1217]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<pwd>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<Pwd_file>} {<x>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1240 1251]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<pwd>} {<test>} {<2>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {<strings>} {<a.out>})
        (command.Simple
          words: [{<grep>} {(DQ <MS-DOS>)}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 1303
              stdin_parts: [<'MS-DOS: Just say no\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<x>} {<answer>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1305 1316]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<strings>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Simple
      words: [{<sum>} {($ Id.VSub_DollarName '$f')}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 1360
              stdin_parts: [<'29904     1\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<x>} {<answer>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1362 1373]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<sum>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {<cat>} {($ Id.VSub_DollarName '$f')})
        (command.Simple
          words: [{<tee>} {<x>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<x>} {($ Id.VSub_DollarName '$f')})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1413 1424]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<tee>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1451 1457]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<true>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 1497
              stdin_parts: [<'100\n'> <'200\n'> <'200\n'> <'300\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 1511
              stdin_parts: [<'100\n'> <'200\n'> <'300\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<uniq>}]
      redirects: [
        (redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<x>})
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<y>})
      ]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<y>} {<answer>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1521 1532]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<uniq>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 1572
              stdin_parts: [
                <'the big black dog\n'>
                <'the little white cat\n'>
                <'the big white sheep\n'>
                <'the little black cat\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<answer>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<END>}
              here_end_span_id: 1591
              stdin_parts: [
                <'   1 dog\n'>
                <'   1 sheep\n'>
                <'   2 big\n'>
                <'   2 black\n'>
                <'   2 cat\n'>
                <'   2 little\n'>
                <'   2 white\n'>
                <'   4 the\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Pipeline
      children: [
        (C {<prep>} {<x>})
        (C {<sort>})
        (command.Simple
          words: [{<uniq>} {<-c>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<y1>})]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<sort>} {<Id.Lit_Other '+'> <1>}]
      redirects: [
        (redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<y1>})
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<y>})
      ]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<y>} {<answer>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1621 1632]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<pipeline>} {<test>} {<1>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {<cat>} {($ Id.VSub_DollarName '$f')} {($ Id.VSub_DollarName '$f')} 
          {($ Id.VSub_DollarName '$f')}
        )
        (C {<sort>})
        (command.Simple
          words: [{<uniq>}]
          redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<x>})]
          do_fork: T
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{<sort>}]
      redirects: [
        (redir
          op: <Id.Redir_Less '<'>
          loc: (redir_loc.Fd fd:0)
          arg: {($ Id.VSub_DollarName '$f')}
        )
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<y>})
      ]
      do_fork: T
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<cmp>} {<-s>} {<x>} {<y>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(command.Sentence child:(C {<Id.Lit_Colon ':'>}) terminator:<Id.Op_Semi _>)]
          spids: [1683 1694]
        )
      ]
      else_action: [
        (command.Sentence
          child: (C {<echo>} {<Error>} {<Id.KW_In in>} {<pipeline>} {<test>} {<2>})
          terminator: <Id.Op_Semi _>
        )
      ]
    )
    (C {<cd>} {<..>})
    (C {<rm>} {<-rf>} {<DIR_SH2>})
    (C {<echo>} {<ok>})
  ]
)