(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: (bool_expr.Binary op_id:BoolBinary_ne left:{($ VSub_Pound '$#')} right:{(2)})
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ('Usage: ') 
                    (word_part.CommandSub
                      left_token: <Left_Backtick '`'>
                      command_list: 
                        (command.CommandList
                          children: [(C {(basename)} {($ VSub_Number '$0')})]
                        )
                    ) (' IP-Address Chef-Environment')
                  )
                }
              ]
              redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(/dev/stderr)})]
            )
            (command.ControlFlow token:<ControlFlow_Exit exit>)
          ]
        )
      ]
    )
    (command.Assignment
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:HOSTNAME)
          op: Equal
          rhs: 
            {
              (word_part.CommandSub
                left_token: <Left_Backtick '`'>
                command_list: (command.CommandList children:[(C {(hostname)} {(-f)})])
              )
            }
        )
      ]
    )
    (command.Pipeline
      children: [
        (C {(knife)} {(client)} {(list)})
        (command.Simple
          words: [{(grep)} {($ VSub_DollarName '$HOSTNAME')}]
          redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})]
        )
      ]
      negated: F
    )
    (command.Assignment
      pairs: [(assign_pair lhs:(lhs_expr.LhsName name:RES) op:Equal rhs:{($ VSub_QMark '$?')})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.DBracket
                  expr: 
                    (bool_expr.Binary
                      op_id: BoolBinary_ne
                      left: {(DQ (${ VSub_Name RES))}
                      right: {(0)}
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(sudo)} {(bash)} {(-c)} 
              {(SQ <'EDITOR=true knife client create $(hostname -f) > /etc/chef/client.pem'>)}
            )
            (C {(knife)} {(actor)} {(map)})
            (C {(knife)} {(group)} {(add)} {(actor)} {(admins)} 
              {
                (word_part.CommandSub
                  left_token: <Left_DollarParen '$('>
                  command_list: (command.CommandList children:[(C {(hostname)} {(-f)})])
                )
              }
            )
          ]
        )
      ]
      else_action: [(C {(echo)} {(DQ ($ VSub_DollarName '$HOSTNAME') (' already registered in Chef'))})]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (command.DBracket expr:(bool_expr.Unary op_id:BoolUnary_d child:{(/home/vagrant)}))
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(knife)} {(bootstrap)} {(-E)} {($ VSub_Number '$2')} {($ VSub_Number '$1')} {(-i)} 
              {(/chef-bcpc-host/vbox/insecure_private_key)} {(-x)} {(vagrant)} {(--sudo)}
            )
          ]
        )
      ]
      else_action: [
        (C {(knife)} {(bootstrap)} {(-E)} {($ VSub_Number '$2')} {($ VSub_Number '$1')} {(-x)} {(ubuntu)} 
          {(--sudo)}
        )
      ]
    )
    (C {(knife)} {(node)} {(run_list)} {(add)} 
      {
        (word_part.CommandSub
          left_token: <Left_DollarParen '$('>
          command_list: (command.CommandList children:[(C {(hostname)} {(-f)})])
        )
      } {(SQ <'role[BCPC-Bootstrap]'>)}
    )
    (C {(sudo)} {(chef-client)})
  ]
)