(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:tid)
          op: assign_op.Equal
          rhs: {(DQ <'sftp permissions'>)}
          spids: [7]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SERVER_LOG)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name OBJ) <'/sftp-server.log'>}
          spids: [13]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CLIENT_LOG)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name OBJ) <'/sftp.log'>}
          spids: [19]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TEST_SFTP_SERVER)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name OBJ) <'/sftp-server.sh'>}
          spids: [25]
        )
      ]
    )
    (command.ShFunction
      name: prepare_server
      body: 
        (BraceGroup
          children: [
            (command.Simple
              words: [
                {<printf>}
                {
                  (DQ <'#!/bin/sh'> <Id.Lit_BadBackslash '\\'> <'nexec '> 
                    ($ Id.VSub_DollarName '$SFTPSERVER') <' -el debug3 '> ($ Id.VSub_Star '$*') <' 2>'> ($ Id.VSub_DollarName '$SERVER_LOG') 
                    <Id.Lit_BadBackslash '\\'> <n>
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName '$TEST_SFTP_SERVER')}
                )
              ]
              do_fork: T
            )
            (C {<chmod>} {<a> <Id.Lit_Other '+'> <x>} {($ Id.VSub_DollarName '$TEST_SFTP_SERVER')})
          ]
        )
    )
    (command.ShFunction
      name: run_client
      body: 
        (BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {<echo>} {(DQ ($ Id.VSub_At '$@'))})
                (command.Simple
                  words: [
                    {(${ Id.VSub_Name SFTP)}
                    {<-D>}
                    {(${ Id.VSub_Name TEST_SFTP_SERVER)}
                    {<-vvvb>}
                    {<->}
                  ]
                  redirects: [
                    (redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName '$CLIENT_LOG')}
                    )
                    (redir
                      op: <Id.Redir_GreatAnd '2>&'>
                      loc: (redir_loc.Fd fd:2)
                      arg: {<1>}
                    )
                  ]
                  do_fork: T
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: prepare_files
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_prep)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [117]
                )
              ]
            )
            (C {<rm>} {<-f>} {(${ Id.VSub_Name COPY)} {(${ Id.VSub_Name COPY) <.1>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-d>} {(${ Id.VSub_Name COPY) <.dd>})
                (BraceGroup
                  children: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {<rmdir>} {(${ Id.VSub_Name COPY) <.dd>})
                            (C {<fatal>} {(DQ <'rmdir '> (${ Id.VSub_Name COPY) <.dd>)})
                          ]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$_prep'))})
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<sh>} {<-c>} {(DQ ($ Id.VSub_DollarName '$_prep'))})
                (C {<fail>} 
                  {
                    (DQ <'preparation failed: '> 
                      (word_part.EscapedLiteral
                        token: <Id.Lit_EscapedChar '\\"'>
                      ) ($ Id.VSub_DollarName '$_prep') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: postcondition
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_title)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [215]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_check)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$2'))}
                  spids: [221]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$_check'))})
                (command.ControlFlow token:<Id.ControlFlow_Return return>)
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(${ Id.VSub_Name TEST_SHELL)} {<-c>} {(DQ ($ Id.VSub_DollarName '$_check'))})
                (C {<fail>} {(DQ <'postcondition check failed: '> ($ Id.VSub_DollarName '$_title'))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: ro_test
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_desc)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [269]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_cmd)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$2'))}
                  spids: [273]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_prep)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$3'))}
                  spids: [279]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_expect_success_post)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$4'))}
                  spids: [285]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_expect_fail_post)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$5'))}
                  spids: [291]
                )
              ]
            )
            (C {<verbose>} 
              {(DQ ($ Id.VSub_DollarName '$tid') <': read-only '> ($ Id.VSub_DollarName '$_desc'))}
            )
            (C {<prepare_files>} {(DQ ($ Id.VSub_DollarName '$_prep'))})
            (C {<prepare_server>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<run_client>} {(DQ ($ Id.VSub_DollarName '$_cmd'))})
                (C {<fail>} {(DQ <'plain '> ($ Id.VSub_DollarName '$_desc') <' failed'>)})
              ]
            )
            (C {<postcondition>} {(DQ ($ Id.VSub_DollarName '$_desc') <' no-readonly'>)} 
              {(DQ ($ Id.VSub_DollarName '$_expect_success_post'))}
            )
            (C {<prepare_files>} {(DQ ($ Id.VSub_DollarName '$_prep'))})
            (C {<prepare_server>} {<-R>})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<run_client>} {(DQ ($ Id.VSub_DollarName '$_cmd'))})
                (C {<fail>} {(DQ <'read-only '> ($ Id.VSub_DollarName '$_desc') <' succeeded'>)})
              ]
            )
            (C {<postcondition>} {(DQ ($ Id.VSub_DollarName '$_desc') <' readonly'>)} 
              {(DQ ($ Id.VSub_DollarName '$_expect_fail_post'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: perm_test
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_op)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [403]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_whitelist_ops)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [407]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_cmd)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$3'))}
                  spids: [411]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_prep)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$4'))}
                  spids: [417]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_expect_success_post)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$5'))}
                  spids: [423]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:_expect_fail_post)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$6'))}
                  spids: [429]
                )
              ]
            )
            (C {<verbose>} 
              {(DQ ($ Id.VSub_DollarName '$tid') <': explicit '> ($ Id.VSub_DollarName '$_op'))}
            )
            (C {<prepare_files>} {(DQ ($ Id.VSub_DollarName '$_prep'))})
            (C {<prepare_server>})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<run_client>} {(DQ ($ Id.VSub_DollarName '$_cmd'))})
                (C {<fail>} {(DQ <'plain '> ($ Id.VSub_DollarName '$_op') <' failed'>)})
              ]
            )
            (C {<postcondition>} {(DQ ($ Id.VSub_DollarName '$_op') <' no white/blacklists'>)} 
              {(DQ ($ Id.VSub_DollarName '$_expect_success_post'))}
            )
            (C {<prepare_files>} {(DQ ($ Id.VSub_DollarName '$_prep'))})
            (C {<prepare_server>} {<-p>} 
              {($ Id.VSub_DollarName '$_op') <Id.Lit_Comma ','> 
                ($ Id.VSub_DollarName '$_whitelist_ops')
              }
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<run_client>} {(DQ ($ Id.VSub_DollarName '$_cmd'))})
                (C {<fail>} {(DQ <'whitelisted '> ($ Id.VSub_DollarName '$_op') <' failed'>)})
              ]
            )
            (C {<postcondition>} {(DQ ($ Id.VSub_DollarName '$_op') <' whitelisted'>)} 
              {(DQ ($ Id.VSub_DollarName '$_expect_success_post'))}
            )
            (C {<prepare_files>} {(DQ ($ Id.VSub_DollarName '$_prep'))})
            (C {<prepare_server>} {<-P>} {($ Id.VSub_DollarName '$_op')})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<run_client>} {(DQ ($ Id.VSub_DollarName '$_cmd'))})
                (C {<fail>} {(DQ <'blacklisted '> ($ Id.VSub_DollarName '$_op') <' succeeded'>)})
              ]
            )
            (C {<postcondition>} {(DQ ($ Id.VSub_DollarName '$_op') <' blacklisted'>)} 
              {(DQ ($ Id.VSub_DollarName '$_expect_fail_post'))}
            )
            (C {<prepare_files>} {(DQ ($ Id.VSub_DollarName '$_prep'))})
            (C {<prepare_server>} {<-p>} {($ Id.VSub_DollarName '$_whitelist_ops')})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<run_client>} {(DQ ($ Id.VSub_DollarName '$_cmd'))})
                (C {<fail>} {(DQ <'no whitelist '> ($ Id.VSub_DollarName '$_op') <' succeeded'>)})
              ]
            )
            (C {<postcondition>} {(DQ ($ Id.VSub_DollarName '$_op') <' not in whitelist'>)} 
              {(DQ ($ Id.VSub_DollarName '$_expect_fail_post'))}
            )
          ]
        )
    )
    (C {<ro_test>} {(DQ <upload>)} 
      {(DQ <'put '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))} {(DQ )} {(DQ <'cmp '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))} 
      {(DQ <'test ! -f '> ($ Id.VSub_DollarName '$COPY'))}
    )
    (C {<ro_test>} {(DQ <setstat>)} {(DQ <'chmod 0700 '> ($ Id.VSub_DollarName '$COPY'))} 
      {
        (DQ <'touch '> ($ Id.VSub_DollarName '$COPY') <'; chmod 0400 '> ($ Id.VSub_DollarName '$COPY'))
      } {(DQ <'test -x '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test ! -x '> ($ Id.VSub_DollarName '$COPY'))}
    )
    (C {<ro_test>} {(DQ <rm>)} {(DQ <'rm '> ($ Id.VSub_DollarName '$COPY'))} 
      {(DQ <'touch '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test ! -f '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test -f '> ($ Id.VSub_DollarName '$COPY'))}
    )
    (C {<ro_test>} {(DQ <mkdir>)} {(DQ <'mkdir '> (${ Id.VSub_Name COPY) <.dd>)} {(DQ )} 
      {(DQ <'test -d '> (${ Id.VSub_Name COPY) <.dd>)} {(DQ <'test ! -d '> (${ Id.VSub_Name COPY) <.dd>)}
    )
    (C {<ro_test>} {(DQ <rmdir>)} {(DQ <'rmdir '> (${ Id.VSub_Name COPY) <.dd>)} 
      {(DQ <'mkdir '> (${ Id.VSub_Name COPY) <.dd>)} {(DQ <'test ! -d '> (${ Id.VSub_Name COPY) <.dd>)} {(DQ <'test -d '> (${ Id.VSub_Name COPY) <.dd>)}
    )
    (C {<ro_test>} {(DQ <posix-rename>)} 
      {(DQ <'rename '> ($ Id.VSub_DollarName '$COPY') <' '> (${ Id.VSub_Name COPY) <.1>)} {(DQ <'touch '> ($ Id.VSub_DollarName '$COPY'))} 
      {(DQ <'test -f '> (${ Id.VSub_Name COPY) <'.1 -a ! -f '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test -f '> ($ Id.VSub_DollarName '$COPY') <' -a ! -f '> (${ Id.VSub_Name COPY) <.1>)}
    )
    (C {<ro_test>} {(DQ <oldrename>)} 
      {(DQ <'rename -l '> ($ Id.VSub_DollarName '$COPY') <' '> (${ Id.VSub_Name COPY) <.1>)} {(DQ <'touch '> ($ Id.VSub_DollarName '$COPY'))} 
      {(DQ <'test -f '> (${ Id.VSub_Name COPY) <'.1 -a ! -f '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test -f '> ($ Id.VSub_DollarName '$COPY') <' -a ! -f '> (${ Id.VSub_Name COPY) <.1>)}
    )
    (C {<ro_test>} {(DQ <symlink>)} 
      {(DQ <'ln -s '> ($ Id.VSub_DollarName '$COPY') <' '> (${ Id.VSub_Name COPY) <.1>)} {(DQ <'touch '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test -h '> (${ Id.VSub_Name COPY) <.1>)} 
      {(DQ <'test ! -h '> (${ Id.VSub_Name COPY) <.1>)}
    )
    (C {<ro_test>} {(DQ <hardlink>)} 
      {(DQ <'ln '> ($ Id.VSub_DollarName '$COPY') <' '> (${ Id.VSub_Name COPY) <.1>)} {(DQ <'touch '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test -f '> (${ Id.VSub_Name COPY) <.1>)} 
      {(DQ <'test ! -f '> (${ Id.VSub_Name COPY) <.1>)}
    )
    (C {<perm_test>} {(DQ <open>)} {(DQ <'realpath,stat,lstat,read,close'>)} 
      {(DQ <'get '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))} {(DQ )} {(DQ <'cmp '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))} 
      {
        (DQ <'! cmp '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY') 
          <' 2>/dev/null'>
        )
      }
    )
    (C {<perm_test>} {(DQ <read>)} {(DQ <'realpath,stat,lstat,open,close'>)} 
      {(DQ <'get '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))} {(DQ )} {(DQ <'cmp '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))} 
      {
        (DQ <'! cmp '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY') 
          <' 2>/dev/null'>
        )
      }
    )
    (C {<perm_test>} {(DQ <write>)} {(DQ <'realpath,stat,lstat,open,close'>)} 
      {(DQ <'put '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))} {(DQ )} {(DQ <'cmp '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))} 
      {
        (DQ <'! cmp '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY') 
          <' 2>/dev/null'>
        )
      }
    )
    (C {<perm_test>} {(DQ <lstat>)} {(DQ <'realpath,stat,open,read,close'>)} 
      {(DQ <'get '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))} {(DQ )} {(DQ <'cmp '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY'))} 
      {
        (DQ <'! cmp '> ($ Id.VSub_DollarName '$DATA') <' '> ($ Id.VSub_DollarName '$COPY') 
          <' 2>/dev/null'>
        )
      }
    )
    (C {<perm_test>} {(DQ <opendir>)} {(DQ <'realpath,readdir,stat,lstat'>)} 
      {(DQ <'ls -ln '> ($ Id.VSub_DollarName '$OBJ'))}
    )
    (C {<perm_test>} {(DQ <readdir>)} {(DQ <'realpath,opendir,stat,lstat'>)} 
      {(DQ <'ls -ln '> ($ Id.VSub_DollarName '$OBJ'))}
    )
    (C {<perm_test>} {(DQ <setstat>)} {(DQ <'realpath,stat,lstat'>)} 
      {(DQ <'chmod 0700 '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'touch '> ($ Id.VSub_DollarName '$COPY') <'; chmod 0400 '> ($ Id.VSub_DollarName '$COPY'))} 
      {(DQ <'test -x '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test ! -x '> ($ Id.VSub_DollarName '$COPY'))}
    )
    (C {<perm_test>} {(DQ <remove>)} {(DQ <'realpath,stat,lstat'>)} 
      {(DQ <'rm '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'touch '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test ! -f '> ($ Id.VSub_DollarName '$COPY'))} 
      {(DQ <'test -f '> ($ Id.VSub_DollarName '$COPY'))}
    )
    (C {<perm_test>} {(DQ <mkdir>)} {(DQ <'realpath,stat,lstat'>)} 
      {(DQ <'mkdir '> (${ Id.VSub_Name COPY) <.dd>)} {(DQ )} {(DQ <'test -d '> (${ Id.VSub_Name COPY) <.dd>)} 
      {(DQ <'test ! -d '> (${ Id.VSub_Name COPY) <.dd>)}
    )
    (C {<perm_test>} {(DQ <rmdir>)} {(DQ <'realpath,stat,lstat'>)} 
      {(DQ <'rmdir '> (${ Id.VSub_Name COPY) <.dd>)} {(DQ <'mkdir '> (${ Id.VSub_Name COPY) <.dd>)} {(DQ <'test ! -d '> (${ Id.VSub_Name COPY) <.dd>)} 
      {(DQ <'test -d '> (${ Id.VSub_Name COPY) <.dd>)}
    )
    (C {<perm_test>} {(DQ <posix-rename>)} {(DQ <'realpath,stat,lstat'>)} 
      {(DQ <'rename '> ($ Id.VSub_DollarName '$COPY') <' '> (${ Id.VSub_Name COPY) <.1>)} {(DQ <'touch '> ($ Id.VSub_DollarName '$COPY'))} 
      {(DQ <'test -f '> (${ Id.VSub_Name COPY) <'.1 -a ! -f '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test -f '> ($ Id.VSub_DollarName '$COPY') <' -a ! -f '> (${ Id.VSub_Name COPY) <.1>)}
    )
    (C {<perm_test>} {(DQ <rename>)} {(DQ <'realpath,stat,lstat'>)} 
      {(DQ <'rename -l '> ($ Id.VSub_DollarName '$COPY') <' '> (${ Id.VSub_Name COPY) <.1>)} {(DQ <'touch '> ($ Id.VSub_DollarName '$COPY'))} 
      {(DQ <'test -f '> (${ Id.VSub_Name COPY) <'.1 -a ! -f '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test -f '> ($ Id.VSub_DollarName '$COPY') <' -a ! -f '> (${ Id.VSub_Name COPY) <.1>)}
    )
    (C {<perm_test>} {(DQ <symlink>)} {(DQ <'realpath,stat,lstat'>)} 
      {(DQ <'ln -s '> ($ Id.VSub_DollarName '$COPY') <' '> (${ Id.VSub_Name COPY) <.1>)} {(DQ <'touch '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test -h '> (${ Id.VSub_Name COPY) <.1>)} 
      {(DQ <'test ! -h '> (${ Id.VSub_Name COPY) <.1>)}
    )
    (C {<perm_test>} {(DQ <hardlink>)} {(DQ <'realpath,stat,lstat'>)} 
      {(DQ <'ln '> ($ Id.VSub_DollarName '$COPY') <' '> (${ Id.VSub_Name COPY) <.1>)} {(DQ <'touch '> ($ Id.VSub_DollarName '$COPY'))} {(DQ <'test -f '> (${ Id.VSub_Name COPY) <.1>)} 
      {(DQ <'test ! -f '> (${ Id.VSub_Name COPY) <.1>)}
    )
    (C {<perm_test>} {(DQ <statvfs>)} {(DQ <'realpath,stat,lstat'>)} {(DQ <'df /'>)})
    (C {<rm>} {<-rf>} {(${ Id.VSub_Name COPY)} {(${ Id.VSub_Name COPY) <.1>} 
      {(${ Id.VSub_Name COPY) <.dd>}
    )
  ]
)