(command.CommandList
  children: [
    (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_Pound '#')}
                        {<-ne>}
                        {<1>}
                        {<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 <'usage: zfsboottest.sh <pool>'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [82 95]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <which>
      more_env: []
      words: [{<which>} {<-s>} {<zfsboottest>}]
      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 '['>}
                        {($ Id.VSub_QMark '?')}
                        {<-eq>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'zfsboottest='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'zfsboottest='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'zfsboottest='> name:zfsboottest)
                  op: assign_op.Equal
                  rhs: {(DQ <zfsboottest>)}
                )
              ]
              redirects: []
            )
          ]
          spids: [121 134]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (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.KW_Bang '!'>}
                            {<-x>}
                            {(DQ <'/usr/src/tools/tools/zfsboottest/zfsboottest'>)}
                            {<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 <'Unable to find '> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) <zfsboottest> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' utility.'>
                      )
                    }
                  ]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              spids: [145 160]
            )
          ]
          else_action: []
          fi_kw: <Id.KW_Fi fi>
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'zfsboottest='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'zfsboottest='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'zfsboottest='> name:zfsboottest)
              op: assign_op.Equal
              rhs: {(DQ <'/usr/src/tools/tools/zfsboottest/zfsboottest'>)}
            )
          ]
          redirects: []
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'startdir='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'startdir='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'startdir='> name:startdir)
          op: assign_op.Equal
          rhs: {(DQ <'/boot'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'pool='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'pool='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pool='> name:pool)
          op: assign_op.Equal
          rhs: {(DQ (${ Id.VSub_Number 1))}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <zpool>
      more_env: []
      words: [{<zpool>} {<list>} {(DQ (${ Id.VSub_Name pool))}]
      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
    )
    (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 <'No such pool '> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\"'>
                      ch: '"'
                    ) (${ Id.VSub_Name pool) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <.>
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [222 235]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'bootfs='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'bootfs='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bootfs='> name:bootfs)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <zpool>
                        more_env: []
                        words: [{<zpool>} {<get>} {<bootfs>} {(DQ (${ Id.VSub_Name pool))}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <tail>
                        more_env: []
                        words: [{<tail>} {<-1>}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <awk>
                        more_env: []
                        words: [{<awk>} {(SQ <'{print $3}'>)}]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      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_Name bootfs))}
                        {<Id.Lit_Equals '='>}
                        {(DQ <->)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'bootfs='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'bootfs='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bootfs='> name:bootfs)
                  op: assign_op.Equal
                  rhs: {(DQ (${ Id.VSub_Name pool))}
                )
              ]
              redirects: []
            )
          ]
          spids: [291 310]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'mountpoint='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'mountpoint='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mountpoint='> name:mountpoint)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <df>
                        more_env: []
                        words: [{<df>} {<-t>} {<zfs>} {(DQ (${ Id.VSub_Name bootfs))}]
                        redirects: [
                          (Redir
                            op: <Id.Redir_Great '2>'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {<'/dev/null'>}
                          )
                        ]
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <tail>
                        more_env: []
                        words: [{<tail>} {<-1>}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <awk>
                        more_env: []
                        words: [{<awk>} {(SQ <'{print $6}'>)}]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      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 '['>}
                        {<-z>}
                        {(DQ (${ Id.VSub_Name mountpoint))}
                        {<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 <'The '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                    (${ Id.VSub_Name bootfs) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' dataset is not mounted.'>
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [356 371]
        )
      ]
      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 '['>}
                        {<Id.KW_Bang '!'>}
                        {<-d>}
                        {(DQ (${ Id.VSub_Name mountpoint) (${ Id.VSub_Name startdir))}
                        {<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 <'The '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                    (${ Id.VSub_Name mountpoint) (${ Id.VSub_Name startdir) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                    <' directory doesn\'t exist.'>
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [396 416]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'vdevs='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'vdevs='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'vdevs='> name:vdevs)
          op: assign_op.Equal
          rhs: {(DQ )}
        )
      ]
      redirects: []
    )
    (command.ForEach
      keyword: <Id.KW_For for>
      iter_names: [vdev]
      iterable: 
        (for_iter.Words
          words: [
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <zpool>
                        more_env: []
                        words: [{<zpool>} {<status>} {(DQ (${ Id.VSub_Name pool))}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <grep>
                        more_env: []
                        words: [{<grep>} {<ONLINE>}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <awk>
                        more_env: []
                        words: [{<awk>} {(SQ <'{print $1}'>)}]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          ]
        )
      semi_tok: <Id.Op_Semi _>
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'vdev='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'vdev='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'vdev='> name:vdev)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'/dev/'> 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name vdev>
                          var_name: vdev
                          suffix_op: 
                            (suffix_op.Unary
                              op: <Id.VOp1_Pound '#'>
                              arg_word: {<Id.Lit_Slash '/'> <dev> <Id.Lit_Slash '/'>}
                            )
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                )
              ]
              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 '['>}
                                {<-c>}
                                {(DQ (${ Id.VSub_Name vdev))}
                                {<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.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<-z>}
                                        {(DQ (${ Id.VSub_Name vdevs))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'vdevs='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'vdevs='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'vdevs='> name:vdevs)
                                  op: assign_op.Equal
                                  rhs: {(DQ (${ Id.VSub_Name vdev))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [517 532]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'vdevs='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'vdevs='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'vdevs='> name:vdevs)
                              op: assign_op.Equal
                              rhs: {(DQ (${ Id.VSub_Name vdevs) <' '> (${ Id.VSub_Name vdev))}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [499 514]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'list0='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'list0='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'list0='> name:list0)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <mktemp>
                    more_env: []
                    words: [{<mktemp>} {<'/tmp/zfsboottest.XXXXXXXXXX'>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      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 '['>}
                        {($ 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 <'Unable to create temporary file.'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [575 588]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'list1='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'list1='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'list1='> name:list1)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <mktemp>
                    more_env: []
                    words: [{<mktemp>} {<'/tmp/zfsboottest.XXXXXXXXXX'>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      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 '['>}
                        {($ 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 <'Unable to create temporary file.'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-f>} {(DQ (${ Id.VSub_Name list0))}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [616 629]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [
        {<echo>}
        {
          (DQ <'zfsboottest.sh is reading all the files in '> (${ Id.VSub_Name mountpoint) 
            (${ Id.VSub_Name startdir) <' using'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'boot code and using file system code.'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'It calculates MD5 checksums for all the files and will compare them.'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [
        {<echo>}
        {(DQ <'If all files can be properly read using boot code, it is very likely you'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [
        {<echo>}
        {
          (DQ <'will be able to boot from '> 
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (${ Id.VSub_Name pool) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
            <' pool>:> Good luck!'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <Id.Left_DoubleQuote '"'>
          more_env: []
          words: [
            {(DQ (${ Id.VSub_Name zfsboottest))}
            {(${ Id.VSub_Name vdevs)}
            {<->}
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <find>
                        more_env: []
                        words: [
                          {<find>}
                          {(DQ (${ Id.VSub_Name mountpoint) (${ Id.VSub_Name startdir))}
                          {<-type>}
                          {<f>}
                        ]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <sed>
                        more_env: []
                        words: [{<sed>} {(DQ <'s@^'> (${ Id.VSub_Name mountpoint) <'@@'>)}]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _>]
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <egrep>
          more_env: []
          words: [{<egrep>} {(SQ <'^[0-9a-z]{32} /'>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <sort>
          more_env: []
          words: [{<sort>} {<-k>} {<2>}]
          redirects: [
            (Redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {(DQ (${ Id.VSub_Name list0))}
            )
          ]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <find>
          more_env: []
          words: [{<find>} {(DQ (${ Id.VSub_Name mountpoint) (${ Id.VSub_Name startdir))} {<-type>} {<f>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <xargs>
          more_env: []
          words: [{<xargs>} {<md5>} {<-r>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <sed>
          more_env: []
          words: [{<sed>} {(DQ <'s@ '> (${ Id.VSub_Name mountpoint) <'@ @'>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <egrep>
          more_env: []
          words: [{<egrep>} {(SQ <'^[0-9a-z]{32} /'>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <sort>
          more_env: []
          words: [{<sort>} {<-k>} {<2>}]
          redirects: [
            (Redir
              op: <Id.Redir_Great '>'>
              loc: (redir_loc.Fd fd:1)
              arg: {(DQ (${ Id.VSub_Name list1))}
            )
          ]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
    )
    (command.Simple
      blame_tok: <diff>
      more_env: []
      words: [{<diff>} {<-u>} {(DQ (${ Id.VSub_Name list0))} {(DQ (${ Id.VSub_Name list1))}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ec='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ec='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ec='> name:ec)
          op: assign_op.Equal
          rhs: {($ Id.VSub_QMark '?')}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <rm>
      more_env: []
      words: [{<rm>} {<-f>} {(DQ (${ Id.VSub_Name list0))} {(DQ (${ Id.VSub_Name list1))}]
      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 '['>}
                        {($ 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>}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'You may not be able to boot.'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [868 881]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <OK>)}]
      redirects: []
      do_fork: T
    )
  ]
)