(command.CommandList
  children: [
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<.>} 
              {
                (DQ 
                  (braced_var_sub
                    token: <Id.VSub_Name srcdir>
                    suffix_op: (suffix_op.Unary tok:<Id.VTest_Equals '='> arg_word:{<.>})
                  ) <'/tests/init.sh'>
                )
              }
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<path_prepend_>} {<'./src'>})
      ]
    )
    (C {<print_ver_>} {<ln>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:t)
          op: assign_op.Equal
          rhs: {<tln-symlink>}
          spids: [65]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:d)
          op: assign_op.Equal
          rhs: {<tln-subdir>}
          spids: [68]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ld)
          op: assign_op.Equal
          rhs: {<tln-symlink-to-subdir>}
          spids: [71]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:f)
          op: assign_op.Equal
          rhs: {<tln-file>}
          spids: [74]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<touch>} {($ Id.VSub_DollarName '$f')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<rm>} {<-f>} {($ Id.VSub_DollarName '$t')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<ln>} {<-s>} {($ Id.VSub_DollarName '$f')} {($ Id.VSub_DollarName '$t')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [112]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {($ Id.VSub_DollarName '$t')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [123]
            )
          ]
        )
      ]
    )
    (C {<rm>} {($ Id.VSub_DollarName '$t')} {($ Id.VSub_DollarName '$f')})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<touch>} {($ Id.VSub_DollarName '$f')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<mkdir>} {($ Id.VSub_DollarName '$d')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<ln>} {<-s>} {<'../'> ($ Id.VSub_DollarName '$f')} 
          {($ Id.VSub_DollarName '$d') <'/'> ($ Id.VSub_DollarName '$t')}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [175]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {($ Id.VSub_DollarName '$d') <'/'> ($ Id.VSub_DollarName '$t')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [188]
            )
          ]
        )
      ]
    )
    (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')} {($ Id.VSub_DollarName '$f')})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<touch>} {($ Id.VSub_DollarName '$f')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<mkdir>} {($ Id.VSub_DollarName '$d')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<ln>} {<-s>} {<'../'> ($ Id.VSub_DollarName '$f')} {($ Id.VSub_DollarName '$d')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [240]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {($ Id.VSub_DollarName '$d') <'/'> ($ Id.VSub_DollarName '$f')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [253]
            )
          ]
        )
      ]
    )
    (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')} {($ Id.VSub_DollarName '$f')})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<touch>} {($ Id.VSub_DollarName '$f')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<mkdir>} {($ Id.VSub_DollarName '$d')} 
          {($ Id.VSub_DollarName '$d') <'/'> ($ Id.VSub_DollarName '$f')}
        )
        (C {<framework_failure_>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<ln>} {($ Id.VSub_DollarName '$f')} {($ Id.VSub_DollarName '$d') <'/'>}]
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [311]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<ln>} {<-s>} {($ Id.VSub_DollarName '$f')} {($ Id.VSub_DollarName '$d') <'/'>}]
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [329]
            )
          ]
        )
      ]
    )
    (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')} {($ Id.VSub_DollarName '$f')})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<touch>} {($ Id.VSub_DollarName '$t')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<ln>} {<-s>} {($ Id.VSub_DollarName '$t')} {($ Id.VSub_DollarName '$t')}]
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [372]
            )
          ]
        )
      ]
    )
    (C {<rm>} {($ Id.VSub_DollarName '$t')})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<touch>} {($ Id.VSub_DollarName '$t')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{<ln>} {<-sf>} {($ Id.VSub_DollarName '$t')} {($ Id.VSub_DollarName '$t')}]
          redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
          do_fork: T
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [405]
            )
          ]
        )
      ]
    )
    (C {<rm>} {($ Id.VSub_DollarName '$t')})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<mkdir>} {($ Id.VSub_DollarName '$d')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<touch>} {($ Id.VSub_DollarName '$d') <'/'> ($ Id.VSub_DollarName '$f')})
        (C {<framework_failure_>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<ln>} {<-s>} {($ Id.VSub_DollarName '$d') <'/'> ($ Id.VSub_DollarName '$f')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [454]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {($ Id.VSub_DollarName '$f')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [465]
            )
          ]
        )
      ]
    )
    (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')} {($ Id.VSub_DollarName '$f')})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')} {($ Id.VSub_DollarName '$f')} 
          {($ Id.VSub_DollarName '$ld')}
        )
        (C {<framework_failure_>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<touch>} {($ Id.VSub_DollarName '$f')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<mkdir>} {($ Id.VSub_DollarName '$d')}) (C {<framework_failure_>})]
    )
    (C {<ln>} {<-s>} {($ Id.VSub_DollarName '$d')} {($ Id.VSub_DollarName '$ld')})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<ln>} {<-s>} {<'../'> ($ Id.VSub_DollarName '$f')} {($ Id.VSub_DollarName '$ld')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [529]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {($ Id.VSub_DollarName '$d') <'/'> ($ Id.VSub_DollarName '$f')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [542]
            )
          ]
        )
      ]
    )
    (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')} {($ Id.VSub_DollarName '$f')} 
      {($ Id.VSub_DollarName '$ld')}
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')} {($ Id.VSub_DollarName '$f')} 
          {($ Id.VSub_DollarName '$ld')}
        )
        (C {<framework_failure_>})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<touch>} {($ Id.VSub_DollarName '$f')}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<mkdir>} {($ Id.VSub_DollarName '$d')}) (C {<framework_failure_>})]
    )
    (C {<ln>} {<-s>} {($ Id.VSub_DollarName '$d')} {($ Id.VSub_DollarName '$ld')})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:af)
          op: assign_op.Equal
          rhs: 
            {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<pwd>})) <'/'> 
              ($ Id.VSub_DollarName '$f')
            }
          spids: [600]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<ln>} {<--no-dereference>} {<-fs>} {(DQ ($ Id.VSub_DollarName '$af'))} 
          {($ Id.VSub_DollarName '$ld')}
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [621]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {($ Id.VSub_DollarName '$ld')})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [632]
            )
          ]
        )
      ]
    )
    (C {<rm>} {<-rf>} {($ Id.VSub_DollarName '$d')} {($ Id.VSub_DollarName '$f')} 
      {($ Id.VSub_DollarName '$ld')}
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<touch>} {<a>} {<b>}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<ln>} {<b>} {<b> <Id.Lit_TildeLike '~'>}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<ln>} {<-f>} {<--b> <Id.Lit_Equals '='> <simple>} {<a>} {<b>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [687]
            )
          ]
        )
      ]
    )
    (command.ForEach
      iter_name: cmd
      iter_words: [{<ln>} {<cp>} {<mv>} {<ginstall>}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {<rm>} {<-rf>} {<a>} {<x>} {<a.orig>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [(C {<touch>} {<a>} {<x>}) (C {<framework_failure_>})]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {($ Id.VSub_DollarName '$cmd')} {<--backup> <Id.Lit_Equals '='> <simple>} 
                  {<--suffix> <Id.Lit_Equals '='> <.orig>} {<x>} {<a>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fail)
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [757]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-f>} {<a.orig>})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:fail)
                      op: assign_op.Equal
                      rhs: {<1>}
                      spids: [769]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.Simple
      words: [{<ln>} {<foo>} {(SQ )}]
      redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
      do_fork: T
    )
    (C {<Exit>} {($ Id.VSub_DollarName '$fail')})
  ]
)