(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_>} {<touch>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<ln>} {<-s>} {<nowhere>} {<dangling>}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<ln>} {<-s>} {<loop>} {<loop>}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<touch>} {<file>}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<ln>} {<-s>} {<file>} {<link1>}) (C {<framework_failure_>})]
    )
    (command.AndOr ops:[Id.Op_DPipe] children:[(C {<mkdir>} {<dir>}) (C {<framework_failure_>})])
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [(C {<ln>} {<-s>} {<dir>} {<link2>}) (C {<framework_failure_>})]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<touch>} {<'no-file/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [143]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<touch>} {<'file/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [152]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<touch>} {<'dangling/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [161]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<touch>} {<'loop/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [170]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<touch>} {<'link1/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [179]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<touch>} {<'dir/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [188]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<touch>} {<-c>} {<'no-file/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [203]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<touch>} {<-c>} {<'file/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [214]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<touch>} {<-c>} {<'dangling/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [225]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<touch>} {<-c>} {<'loop/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [236]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<touch>} {<-c>} {<'link1/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [247]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<touch>} {<-c>} {<'dir/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [258]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<-f>} {<no-file>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [269]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {<test>} {<-f>} {<nowhere>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [280]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<touch>} {<-d>} {<2009-10-10>} {<-h>} {<'link2/'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [305]
            )
          ]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<touch>} {<-h>} {<-r>} {<'link2/'>} {<file>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [320]
            )
          ]
        )
      ]
    )
    (command.Case
      to_match: 
        {
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            child: (C {<stat>} {<--format> <Id.Lit_Equals '='> <Id.Lit_Other '%'> <y>} {<dir>})
          )
        }
      arms: [
        (case_arm pat_list:[{<2009-10-10> <Id.Lit_Star '*'>}] spids:[339 341 343 -1])
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fail)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [349]
                )
              ]
            )
          ]
          spids: [346 347 352 -1]
        )
      ]
    )
    (command.Case
      to_match: 
        {
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            child: (C {<stat>} {<--format> <Id.Lit_Equals '='> <Id.Lit_Other '%'> <y>} {<link2>})
          )
        }
      arms: [
        (case_arm
          pat_list: [{<2009-10-10> <Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fail)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [376]
                )
              ]
            )
          ]
          spids: [372 374 379 -1]
        )
      ]
    )
    (command.Case
      to_match: 
        {
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            child: (C {<stat>} {<--format> <Id.Lit_Equals '='> <Id.Lit_Other '%'> <y>} {<file>})
          )
        }
      arms: [
        (case_arm pat_list:[{<2009-10-10> <Id.Lit_Star '*'>}] spids:[399 401 403 -1])
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fail)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [409]
                )
              ]
            )
          ]
          spids: [406 407 412 -1]
        )
      ]
    )
    (C {<Exit>} {($ Id.VSub_DollarName '$fail')})
  ]
)