(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'uidrange='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'uidrange='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uidrange='> name:uidrange)
          op: assign_op.Equal
          rhs: {(DQ <'60000:100000'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'gidrange='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'gidrange='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gidrange='> name:gidrange)
          op: assign_op.Equal
          rhs: {(DQ <'60000:100000'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'uidinrange='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'uidinrange='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uidinrange='> name:uidinrange)
          op: assign_op.Equal
          rhs: {(DQ <nobody>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'uidoutrange='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'uidoutrange='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uidoutrange='> name:uidoutrange)
          op: assign_op.Equal
          rhs: {(DQ <daemon>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'gidinrange='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'gidinrange='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gidinrange='> name:gidinrange)
          op: assign_op.Equal
          rhs: {(DQ <nobody>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'gidoutrange='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'gidoutrange='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gidoutrange='> name:gidoutrange)
          op: assign_op.Equal
          rhs: {(DQ <daemon>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_num='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_num='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_num='> name:test_num)
          op: assign_op.Equal
          rhs: {<1>}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <pass>
      name: pass
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'ok '> ($ Id.VSub_DollarName test_num) <' # '> ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [
                {<Id.Lit_Colon ':'>}
                {
                  (word_part.ArithSub
                    left: <Id.Left_DollarDParen '$(('>
                    anode: 
                      (arith_expr.BinaryAssign
                        op_id: Id.Arith_PlusEqual
                        left: ($ Id.Lit_ArithVarLike test_num)
                        right: {<Id.Lit_Digits 1>}
                      )
                    right: <Id.Right_DollarDParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <fail>
      name: fail
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(DQ <'not ok '> ($ Id.VSub_DollarName test_num) <' # '> ($ Id.VSub_At '@'))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [
                {<Id.Lit_Colon ':'>}
                {
                  (word_part.ArithSub
                    left: <Id.Left_DollarDParen '$(('>
                    anode: 
                      (arith_expr.BinaryAssign
                        op_id: Id.Arith_PlusEqual
                        left: ($ Id.Lit_ArithVarLike test_num)
                        right: {<Id.Lit_Digits 1>}
                      )
                    right: <Id.Right_DollarDParen _>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <Id.Lit_Colon ':'>
      more_env: []
      words: [
        {<Id.Lit_Colon ':'>}
        {
          (BracedVarSub
            left: <Id.Left_DollarBrace '${'>
            token: <Id.VSub_Name TMPDIR>
            var_name: TMPDIR
            suffix_op: (suffix_op.Unary op:<Id.VTest_Equals _> arg_word:{<Id.Lit_Slash '/'> <tmp>})
            right: <Id.Right_DollarBrace '}'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <id>
                                more_env: []
                                words: [{<id>} {<-u>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                        {<-ne>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'1..0 # SKIP test must be run as root'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [138 155]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      negated: <Id.KW_Bang '!'>
                      children: [
                        (command.Simple
                          blame_tok: <sysctl>
                          more_env: []
                          words: [{<sysctl>} {<-N>} {<security.mac.bsdextended>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                            (Redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'1..0 # SKIP mac_bsdextended(4) support isn\'t available'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [171 188]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {(DQ ($ Id.VSub_DollarName TMPDIR))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {(DQ <'/tmp'>)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <chmod>
                                  more_env: []
                                  words: [{<chmod>} {<-Rf>} {<0755>} {($ Id.VSub_DollarName TMPDIR)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'1..0 # SKIP failed to chmod '> ($ Id.VSub_DollarName TMPDIR))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [225 238]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          spids: [204 222]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      negated: <Id.KW_Bang '!'>
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'playground='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'playground='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'playground='>
                                  name: playground
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <mktemp>
                                        more_env: []
                                        words: [
                                          {<mktemp>}
                                          {<-d>}
                                          {($ Id.VSub_DollarName TMPDIR) <'/tmp.XXXXXXX'>}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'1..0 # SKIP failed to create temporary directory'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [258 273]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {(DQ <'rmdir '> ($ Id.VSub_DollarName playground))} {<EXIT>} {<INT>} {<TERM>}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      negated: <Id.KW_Bang '!'>
                      children: [
                        (command.Simple
                          blame_tok: <mdmfs>
                          more_env: []
                          words: [{<mdmfs>} {<-s>} {<25m>} {<md>} {($ Id.VSub_DollarName playground)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'1..0 # SKIP failed to mount md device'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [302 317]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <chmod>
      more_env: []
      words: [{<chmod>} {<a> <Id.Lit_Other '+'> <rwx>} {($ Id.VSub_DollarName playground)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'md_device='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'md_device='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'md_device='> name:md_device)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <mount>
                        more_env: []
                        words: [{<mount>} {<-p>}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <grep>
                        more_env: []
                        words: [{<grep>} {(DQ ($ Id.VSub_DollarName playground))}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <awk>
                        more_env: []
                        words: [{<awk>} {(SQ <'{ gsub(/^\\/dev\\//, "", $1); print $1 }'>)}]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [
        {<trap>}
        {
          (DQ <'umount -f '> ($ Id.VSub_DollarName playground) <'; mdconfig -d -u '> 
            ($ Id.VSub_DollarName md_device) <'; rmdir '> ($ Id.VSub_DollarName playground)
          )
        }
        {<EXIT>}
        {<INT>}
        {<TERM>}
      ]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-z>}
                        {(DQ ($ Id.VSub_DollarName md_device))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <mount>
                  more_env: []
                  words: [{<mount>} {<-p>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <grep>
                  more_env: []
                  words: [{<grep>} {($ Id.VSub_DollarName playground)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'1..0 # SKIP md device not properly attached to the system'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [381 394]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [{<ugidfw>} {<remove>} {<1>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'file1='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'file1='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file1='> name:file1)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName playground) <'/test-'> ($ Id.VSub_DollarName uidinrange)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'file2='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'file2='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file2='> name:file2)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName playground) <'/test-'> ($ Id.VSub_DollarName uidoutrange)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName playground) <'/test-script.sh'>}
        )
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(SQ <EOF>)}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [<'#!/bin/sh\n'> <': > $1\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_QMark '?')}
                        {<-ne>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'1..0 # SKIP failed to create test script'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [449 462]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <1..30>)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'command1='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'command1='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command1='> name:command1)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'sh '> ($ Id.VSub_DollarName playground) <'/test-script.sh '> 
                ($ Id.VSub_DollarName file1)
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'command2='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'command2='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command2='> name:command2)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'sh '> ($ Id.VSub_DollarName playground) <'/test-script.sh '> 
                ($ Id.VSub_DollarName file2)
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName uidinrange) <' file'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-m>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [508 523]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <chown>
      more_env: []
      words: [
        {<chown>}
        {(DQ ($ Id.VSub_DollarName uidinrange)) <Id.Lit_Colon ':'> 
          (DQ ($ Id.VSub_DollarName gidinrange))
        }
        {($ Id.VSub_DollarName file1)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <chmod>
      more_env: []
      words: [{<chmod>} {<a> <Id.Lit_Other '+'> <w>} {($ Id.VSub_DollarName file1)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName uidoutrange) <' file'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.VSub_DollarName '$command2'>
                      more_env: []
                      words: [{($ Id.VSub_DollarName command2)}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [567 572]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <chown>
      more_env: []
      words: [
        {<chown>}
        {(DQ ($ Id.VSub_DollarName uidoutrange)) <Id.Lit_Colon ':'> 
          (DQ ($ Id.VSub_DollarName gidoutrange))
        }
        {($ Id.VSub_DollarName file2)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <chmod>
      more_env: []
      words: [{<chmod>} {<a> <Id.Lit_Other '+'> <w>} {($ Id.VSub_DollarName file2)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'no rules '> ($ Id.VSub_DollarName uidinrange))}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [625 640]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'no rules '> ($ Id.VSub_DollarName uidoutrange))}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidoutrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [663 678]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<uid>}
        {($ Id.VSub_DollarName uidrange)}
        {<object>}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'subject uid in range'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [727 742]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'subject uid out range'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidoutrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [764 779]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<gid>}
        {($ Id.VSub_DollarName gidrange)}
        {<object>}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'subject gid in range'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [829 844]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'subject gid out range'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidoutrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [866 881]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <which>
                      more_env: []
                      words: [{<which>} {<jail>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-f>} {($ Id.VSub_DollarName playground) <'/test-jail'>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'desc='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'desc='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
                  op: assign_op.Equal
                  rhs: {(DQ <'subject matching jailid'>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'jailid='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'jailid='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'jailid='> name:jailid)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <jail>
                            more_env: []
                            words: [
                              {<jail>}
                              {<-i>}
                              {<'/'>}
                              {<localhost>}
                              {<127.0.0.1>}
                              {<'/usr/sbin/daemon'>}
                              {<-f>}
                              {<'/bin/sh'>}
                              {<-c>}
                              {
                                (DQ <'(sleep 5; touch '> ($ Id.VSub_DollarName playground) 
                                  <'/test-jail) &'>
                                )
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <ugidfw>
              more_env: []
              words: [
                {<ugidfw>}
                {<set>}
                {<1>}
                {<subject>}
                {<jailid>}
                {($ Id.VSub_DollarName jailid)}
                {<object>}
                {<mode>}
                {<rasx>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <sleep>
              more_env: []
              words: [{<sleep>} {<10>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-f>}
                                {($ Id.VSub_DollarName playground) <'/test-jail'>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <fail>
                      more_env: []
                      words: [
                        {<fail>}
                        {
                          (DQ <'TODO '> ($ Id.VSub_DollarName desc) 
                            <': this testcase fails (see bug # 205481)'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [993 1005]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <pass>
                  more_env: []
                  words: [{<pass>} {($ Id.VSub_DollarName desc)}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-f>} {($ Id.VSub_DollarName playground) <'/test-jail'>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'desc='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'desc='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
                  op: assign_op.Equal
                  rhs: {(DQ <'subject nonmatching jailid'>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'jailid='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'jailid='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'jailid='> name:jailid)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <jail>
                            more_env: []
                            words: [
                              {<jail>}
                              {<-i>}
                              {<'/'>}
                              {<localhost>}
                              {<127.0.0.1>}
                              {<'/usr/sbin/daemon'>}
                              {<-f>}
                              {<'/bin/sh'>}
                              {<-c>}
                              {
                                (DQ <'(sleep 5; touch '> ($ Id.VSub_DollarName playground) 
                                  <'/test-jail) &'>
                                )
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <sleep>
              more_env: []
              words: [{<sleep>} {<10>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-f>}
                                {($ Id.VSub_DollarName playground) <'/test-jail'>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <pass>
                      more_env: []
                      words: [{<pass>} {($ Id.VSub_DollarName desc)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [1078 1090]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <fail>
                  more_env: []
                  words: [{<fail>} {($ Id.VSub_DollarName desc)}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          spids: [898 908]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {(DQ <'skip jail(8) not installed'>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {(DQ <'skip jail(8) not installed'>)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<object>}
        {<uid>}
        {($ Id.VSub_DollarName uidrange)}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object uid in range'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1164 1179]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object uid out range'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command2))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1201 1216]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<object>}
        {<uid>}
        {($ Id.VSub_DollarName uidrange)}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object uid in range (different subject)'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidoutrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1256 1271]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object uid out range (different subject)'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidoutrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command2))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1293 1308]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<object>}
        {<gid>}
        {($ Id.VSub_DollarName uidrange)}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object gid in range'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1358 1373]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object gid out range'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command2))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1395 1410]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object gid in range (different subject)'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidoutrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1431 1446]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object gid out range (different subject)'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidoutrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command2))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1468 1483]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<uid>}
        {($ Id.VSub_DollarName uidrange)}
        {<object>}
        {<filesys>}
        {<'/'>}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object out of filesys'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1536 1551]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<uid>}
        {($ Id.VSub_DollarName uidrange)}
        {<object>}
        {<filesys>}
        {($ Id.VSub_DollarName playground)}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object in filesys'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1595 1610]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<uid>}
        {($ Id.VSub_DollarName uidrange)}
        {<object>}
        {<suid>}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object notsuid'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1661 1676]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <chmod>
      more_env: []
      words: [{<chmod>} {<u> <Id.Lit_Other '+'> <s>} {($ Id.VSub_DollarName file1)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object suid'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1706 1721]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <chmod>
      more_env: []
      words: [{<chmod>} {<u-s>} {($ Id.VSub_DollarName file1)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<uid>}
        {($ Id.VSub_DollarName uidrange)}
        {<object>}
        {<sgid>}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object notsgid'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1778 1793]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <chmod>
      more_env: []
      words: [{<chmod>} {<g> <Id.Lit_Other '+'> <s>} {($ Id.VSub_DollarName file1)}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object sgid'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1823 1838]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <chmod>
      more_env: []
      words: [{<chmod>} {<g-s>} {($ Id.VSub_DollarName file1)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<uid>}
        {($ Id.VSub_DollarName uidrange)}
        {<object>}
        {<uid_of_subject>}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object uid notmatches subject'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command2))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1896 1911]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object uid matches subject'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [1933 1948]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<uid>}
        {($ Id.VSub_DollarName uidrange)}
        {<object>}
        {<gid_of_subject>}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object gid notmatches subject'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command2))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [2000 2015]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object gid matches subject'>)}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [2037 2052]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object not type'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<uid>}
        {($ Id.VSub_DollarName uidrange)}
        {<object>}
        {<type>}
        {<dbclsp>}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <pass>
              more_env: []
              words: [{<pass>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [2105 2120]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <fail>
          more_env: []
          words: [{<fail>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'desc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'desc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc)
          op: assign_op.Equal
          rhs: {(DQ <'object type'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <ugidfw>
      more_env: []
      words: [
        {<ugidfw>}
        {<set>}
        {<1>}
        {<subject>}
        {<uid>}
        {($ Id.VSub_DollarName uidrange)}
        {<object>}
        {<type>}
        {<r>}
        {<mode>}
        {<rasx>}
      ]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <su>
                      more_env: []
                      words: [
                        {<su>}
                        {<-fm>}
                        {($ Id.VSub_DollarName uidinrange)}
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName command1))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <fail>
              more_env: []
              words: [{<fail>} {($ Id.VSub_DollarName desc)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [2164 2179]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <pass>
          more_env: []
          words: [{<pass>} {($ Id.VSub_DollarName desc)}]
          redirects: []
          do_fork: T
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
  ]
)