(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_>} {<chgrp>})
    (C {<require_membership_in_two_groups_>})
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {<set>} {<Id.Lit_Underscore _>} {($ Id.VSub_DollarName '$groups')})
          terminator: <Id.Op_Semi _>
        )
        (C {<shift>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:g1)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [76]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:g2)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$2')}
          spids: [79]
        )
      ]
    )
    (C {<mkdir>} {<d>} {<e>})
    (C {<touch>} {<'d/dd'>} {<'e/ee'>})
    (C {<ln>} {<-s>} {<'../e'>} {<'d/s'>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<chgrp>} {<-R>} {($ Id.VSub_DollarName '$g1')} {<'e/ee'>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [117]
            )
          ]
        )
      ]
    )
    (C {<chgrp>} {<-R>} {($ Id.VSub_DollarName '$g2')} {<d>})
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<set>} {<Id.Lit_Underscore _>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<'e/ee'>}))}
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:g)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$5')}
                  spids: [144]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} 
              {($ Id.VSub_DollarName '$g1')}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fail)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [160]
                )
              ]
            )
          ]
        )
      ]
    )
    (C {<chgrp>} {<-L>} {<-R>} {($ Id.VSub_DollarName '$g2')} {<d>})
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<set>} {<Id.Lit_Underscore _>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<'e/ee'>}))}
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:g)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$5')}
                  spids: [192]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} 
              {($ Id.VSub_DollarName '$g2')}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fail)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [208]
                )
              ]
            )
          ]
        )
      ]
    )
    (C {<chgrp>} {<-H>} {<-R>} {($ Id.VSub_DollarName '$g1')} {<d>})
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<set>} {<Id.Lit_Underscore _>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<'e/ee'>}))}
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:g)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$5')}
                  spids: [238]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} 
              {($ Id.VSub_DollarName '$g2')}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fail)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [254]
                )
              ]
            )
          ]
        )
      ]
    )
    (C {<ln>} {<-s>} {<d>} {<link>})
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<chgrp>} {<-H>} {<-R>} {($ Id.VSub_DollarName '$g1')} {<link>})
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:fail)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [282]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<set>} {<Id.Lit_Underscore _>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<'e/ee'>}))}
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:g)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$5')}
                  spids: [298]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} 
              {($ Id.VSub_DollarName '$g2')}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fail)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [314]
                )
              ]
            )
          ]
        )
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (C {<set>} {<Id.Lit_Underscore _>} 
              {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<ls>} {<-ln>} {<'d/dd'>}))}
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:g)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$5')}
                  spids: [333]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C {<test>} {(DQ ($ Id.VSub_DollarName '$g'))} {<Id.Lit_Equals '='>} 
              {($ Id.VSub_DollarName '$g1')}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fail)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [349]
                )
              ]
            )
          ]
        )
      ]
    )
    (C {<Exit>} {($ Id.VSub_DollarName '$fail')})
  ]
)