(command.CommandList
  children: [
    (C {<set>} {<-eu>})
    (command.ForEach
      iter_name: CMD
      iter_words: [{<VBoxManage>} {<git>} {<pcregrep>}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  words: [{<which>} {($ Id.VSub_DollarName '$CMD')}]
                                  redirects: [
                                    (redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              negated: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'Could not find '> ($ Id.VSub_DollarName '$CMD') <' on PATH, exiting.'>)
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [56 68]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:REPO_ROOT)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<git>} {<rev-parse>} {<--show-toplevel>})
              )
            }
          spids: [96]
        )
      ]
    )
    (C {<source>} 
      {($ Id.VSub_DollarName '$REPO_ROOT') <'/bootstrap/config/bootstrap_config.sh.defaults'>}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:CONFIG_OVERRIDES)
          op: assign_op.Equal
          rhs: 
            {($ Id.VSub_DollarName '$REPO_ROOT') <'/bootstrap/config/bootstrap_config.sh.overrides'>}
          spids: [114]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Unary
                          op_id: Id.BoolUnary_f
                          child: {($ Id.VSub_DollarName '$CONFIG_OVERRIDES')}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<source>} {($ Id.VSub_DollarName '$CONFIG_OVERRIDES')})]
          spids: [119 130]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_GlobDEqual
                          left: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>}))}
                          right: {(DQ <Darwin>)}
                        )
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:SED)
                  op: assign_op.Equal
                  rhs: {(DQ <'sed -E'>)}
                  spids: [163]
                )
              ]
            )
          ]
          spids: [143 160]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:SED)
              op: assign_op.Equal
              rhs: {(DQ <'sed -r'>)}
              spids: [171]
            )
          ]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DMF_SET)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<VBoxManage>} {<list>} {<systemproperties>})
                      (C {<grep>} {(SQ <'^Default machine folder:'>)})
                    ]
                    negated: F
                  )
              )
            }
          spids: [178]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OLD_DMF_PATH)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (C {<echo>} {(DQ ($ Id.VSub_DollarName '$DMF_SET'))})
                      (C {($ Id.VSub_DollarName '$SED')} 
                        {(SQ <'s/^Default machine folder:[[:space:]]+(.+)$/\\1/'>)}
                      )
                    ]
                    negated: F
                  )
              )
            }
          spids: [195]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DMF_PATH)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (braced_var_sub
                  token: <Id.VSub_Name ANSIBLE_VM_DIR>
                  suffix_op: 
                    (suffix_op.Unary
                      tok: <Id.VTest_ColonHyphen ':-'>
                      arg_word: {($ Id.VSub_DollarName '$OLD_DMF_PATH')}
                    )
                )
              )
            }
          spids: [212]
        )
      ]
    )
    (C {($ Id.VSub_DollarName '$REPO_ROOT') <'/bootstrap/ansible_scripts/scripts/vbox_clean.sh'>})
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [(C {<VBoxManage>} {<hostonlyif>} {<remove>} {<vboxnet0>}) (C {<true>})]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [(C {<VBoxManage>} {<hostonlyif>} {<remove>} {<vboxnet1>}) (C {<true>})]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [(C {<VBoxManage>} {<hostonlyif>} {<remove>} {<vboxnet2>}) (C {<true>})]
    )
    (C {<VBoxManage>} {<hostonlyif>} {<create>})
    (C {<VBoxManage>} {<hostonlyif>} {<ipconfig>} {<vboxnet0>} {<--ip>} {<10.0.100.2>} {<--netmask>} 
      {<255.255.255.0>}
    )
    (C {<VBoxManage>} {<hostonlyif>} {<create>})
    (C {<VBoxManage>} {<hostonlyif>} {<ipconfig>} {<vboxnet1>} {<--ip>} {<172.16.100.2>} {<--netmask>} 
      {<255.255.255.0>}
    )
    (C {<VBoxManage>} {<hostonlyif>} {<create>})
    (C {<VBoxManage>} {<hostonlyif>} {<ipconfig>} {<vboxnet2>} {<--ip>} {<192.168.100.2>} {<--netmask>} 
      {<255.255.255.0>}
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [(C {<VBoxManage>} {<dhcpserver>} {<remove>} {<--ifname>} {<vboxnet0>}) (C {<true>})]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [(C {<VBoxManage>} {<dhcpserver>} {<remove>} {<--ifname>} {<vboxnet1>}) (C {<true>})]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [(C {<VBoxManage>} {<dhcpserver>} {<remove>} {<--ifname>} {<vboxnet2>}) (C {<true>})]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:VMS)
          op: assign_op.Equal
          rhs: {(DQ <'ansible-bcpc-vm1 ansible-bcpc-vm2 ansible-bcpc-vm3'>)}
          spids: [384]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$MONITORING_NODES')} {<-gt>} {<0>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:i)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [405]
                )
              ]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$i')} {<-le>} 
                          {($ Id.VSub_DollarName '$MONITORING_NODES')} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MON_VM)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <ansible-bcpc-vm> 
                                (command_sub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (C {<expr>} {<3>} {<Id.Lit_Other '+'>} {($ Id.VSub_DollarName '$i')})
                                )
                              )
                            }
                          spids: [425]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:VMS)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$VMS') <' '> ($ Id.VSub_DollarName '$MON_VM'))
                            }
                          spids: [442]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:i)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (C {<expr>} {($ Id.VSub_DollarName '$i')} {<Id.Lit_Other '+'>} {<1>})
                              )
                            }
                          spids: [450]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
          spids: [389 402]
        )
      ]
    )
    (C {<echo>} {(DQ <'Creating bootstrap VM'>)})
    (C {<VBoxManage>} {<createvm>} {<--basefolder>} {(DQ ($ Id.VSub_DollarName '$DMF_PATH'))} {<--name>} 
      {<ansible-bcpc-bootstrap>} {<--register>}
    )
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--ostype>} {<Ubuntu_64>})
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--memory>} 
      {($ Id.VSub_DollarName '$BOOTSTRAP_VM_MEM')}
    )
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--cpus>} 
      {($ Id.VSub_DollarName '$BOOTSTRAP_VM_CPUS')}
    )
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nic1>} {<nat>})
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nictype1>} {<82543GC>})
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nic2>} {<hostonly>})
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nictype2>} {<82543GC>})
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--hostonlyadapter2>} {<vboxnet0>})
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nic3>} {<hostonly>})
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nictype3>} {<82543GC>})
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--hostonlyadapter3>} {<vboxnet1>})
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nic4>} {<hostonly>})
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--nictype4>} {<82543GC>})
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--hostonlyadapter4>} {<vboxnet2>})
    (C {<VBoxManage>} {<storagectl>} {<ansible-bcpc-bootstrap>} {<--name>} {(DQ <SATA>)} {<--add>} {<sata>} 
      {<--portcount>} {<3>} {<--hostiocache>} {<on>}
    )
    (C {<VBoxManage>} {<createhd>} {<--filename>} 
      {
        (DQ ($ Id.VSub_DollarName '$DMF_PATH') 
          <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sda.vdi'>
        )
      } {<--size>} {($ Id.VSub_DollarName '$BOOTSTRAP_VM_DRIVE_SIZE')}
    )
    (C {<VBoxManage>} {<storageattach>} {<ansible-bcpc-bootstrap>} {<--storagectl>} {(DQ <SATA>)} 
      {<--device>} {<0>} {<--port>} {<0>} {<--type>} {<hdd>} {<--medium>} 
      {
        (DQ ($ Id.VSub_DollarName '$DMF_PATH') 
          <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sda.vdi'>
        )
      }
    )
    (C {<VBoxManage>} {<createhd>} {<--filename>} 
      {
        (DQ ($ Id.VSub_DollarName '$DMF_PATH') 
          <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sdb.vdi'>
        )
      } {<--size>} {<8192>}
    )
    (C {<VBoxManage>} {<storageattach>} {<ansible-bcpc-bootstrap>} {<--storagectl>} {(DQ <SATA>)} 
      {<--device>} {<0>} {<--port>} {<1>} {<--type>} {<hdd>} {<--medium>} 
      {
        (DQ ($ Id.VSub_DollarName '$DMF_PATH') 
          <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sdb.vdi'>
        )
      }
    )
    (C {<VBoxManage>} {<createhd>} {<--filename>} 
      {
        (DQ ($ Id.VSub_DollarName '$DMF_PATH') 
          <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sdc.vdi'>
        )
      } {<--size>} {($ Id.VSub_DollarName '$BOOTSTRAP_VM_DRIVE_SIZE')}
    )
    (C {<VBoxManage>} {<storageattach>} {<ansible-bcpc-bootstrap>} {<--storagectl>} {(DQ <SATA>)} 
      {<--device>} {<0>} {<--port>} {<2>} {<--type>} {<hdd>} {<--medium>} 
      {
        (DQ ($ Id.VSub_DollarName '$DMF_PATH') 
          <'/ansible-bcpc-bootstrap/ansible-bcpc-bootstrap-sdc.vdi'>
        )
      }
    )
    (C {<VBoxManage>} {<storagectl>} {<ansible-bcpc-bootstrap>} {<--name>} {(DQ <IDE>)} {<--add>} {<ide>})
    (C {<VBoxManage>} {<storageattach>} {<ansible-bcpc-bootstrap>} {<--storagectl>} {(DQ <IDE>)} 
      {<--device>} {<0>} {<--port>} {<0>} {<--type>} {<dvddrive>} {<--medium>} {<emptydrive>}
    )
    (C {<VBoxManage>} {<modifyvm>} {<ansible-bcpc-bootstrap>} {<--boot1>} {<dvd>})
    (command.ForEach
      iter_name: VM
      iter_words: [{($ Id.VSub_DollarName '$VMS')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {<echo>} {(DQ <'Creating cluster VM '> ($ Id.VSub_DollarName '$VM'))})
            (C {<VBoxManage>} {<createvm>} {<--basefolder>} {(DQ ($ Id.VSub_DollarName '$DMF_PATH'))} 
              {<--name>} {($ Id.VSub_DollarName '$VM')} {<--register>}
            )
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--ostype>} {<Ubuntu_64>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--memory>} 
              {($ Id.VSub_DollarName '$CLUSTER_VM_MEM')}
            )
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--cpus>} 
              {($ Id.VSub_DollarName '$CLUSTER_VM_CPUS')}
            )
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nic1>} {<hostonly>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nictype1>} {<82543GC>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--hostonlyadapter1>} 
              {<vboxnet0>}
            )
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nic2>} {<hostonly>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nictype2>} {<82543GC>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--hostonlyadapter2>} 
              {<vboxnet1>}
            )
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nic3>} {<hostonly>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nictype3>} {<82543GC>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--hostonlyadapter3>} 
              {<vboxnet2>}
            )
            (C {<VBoxManage>} {<storagectl>} {($ Id.VSub_DollarName '$VM')} {<--name>} {(DQ <SATA>)} 
              {<--add>} {<sata>} {<--portcount>} {<5>} {<--hostiocache>} {<on>}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PORT)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [1058]
                )
              ]
            )
            (command.ForEach
              iter_name: DISK
              iter_words: [{<a>} {<b>} {<c>} {<d>} {<e>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<VBoxManage>} {<createhd>} {<--filename>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$DMF_PATH') <'/'> ($ Id.VSub_DollarName '$VM') <'/'> 
                          ($ Id.VSub_DollarName '$VM') <-sd> ($ Id.VSub_DollarName '$DISK') <.vdi>
                        )
                      } {<--size>} {($ Id.VSub_DollarName '$CLUSTER_VM_DRIVE_SIZE')}
                    )
                    (C {<VBoxManage>} {<storageattach>} {($ Id.VSub_DollarName '$VM')} {<--storagectl>} 
                      {(DQ <SATA>)} {<--device>} {<0>} {<--port>} {($ Id.VSub_DollarName '$PORT')} {<--type>} {<hdd>} {<--medium>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$DMF_PATH') <'/'> ($ Id.VSub_DollarName '$VM') <'/'> 
                          ($ Id.VSub_DollarName '$VM') <-sd> ($ Id.VSub_DollarName '$DISK') <.vdi>
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:PORT)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: <Id.Lit_ArithVarLike PORT>
                                    right: {<Id.Lit_Digits 1>}
                                  )
                              )
                            }
                          spids: [1142]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {<VBoxManage>} {<setextradata>} {($ Id.VSub_DollarName '$VM')} 
              {<'VBoxInternal/Devices/pcbios/0/Config/LanBootRom'>} {(DQ ($ Id.VSub_DollarName '$BOOTSTRAP_CACHE_DIR') <'/gpxe-1.0.1-80861004.rom'>)}
            )
          ]
        )
    )
    (command.ForEach
      iter_name: VM
      iter_words: [{<ansible-bcpc-bootstrap>} {($ Id.VSub_DollarName '$VMS')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--vram>} {<16>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--largepages>} {<on>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--nestedpaging>} {<on>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--vtxvpid>} {<on>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--hwvirtex>} {<on>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--ioapic>} {<on>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--uart1>} {<0x3F8>} {<4>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--uart2>} {<0x2F8>} {<3>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--uartmode1>} {<disconnected>})
            (C {<VBoxManage>} {<modifyvm>} {($ Id.VSub_DollarName '$VM')} {<--uartmode2>} {<disconnected>})
          ]
        )
    )
    (command.ShFunction
      name: get_node_role
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$1')}
                                  right: {(SQ <ansible-bcpc-bootstrap>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(SQ <bootstrap>)})]
                  spids: [1318 1333]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$1')}
                                  right: {(SQ <ansible-bcpc-vm1>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(SQ <head>)})]
                  spids: [1343 1358]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$1')}
                                  right: {(SQ <ansible-bcpc-vm2>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(SQ <work>)})]
                  spids: [1368 1383]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$1')}
                                  right: {(DQ <ansible-bcpc-vm3>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(SQ <work-ephemeral>)})]
                  spids: [1393 1408]
                )
              ]
              else_action: [(C {<echo>} {(SQ <reserved>)})]
            )
          ]
        )
    )
    (command.ShFunction
      name: get_node_ip
      body: 
        (BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$1')}
                                  right: {(SQ <ansible-bcpc-bootstrap>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(SQ <10.0.100.3>)})]
                  spids: [1440 1455]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$1')}
                                  right: {(SQ <ansible-bcpc-vm1>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(SQ <10.0.100.11>)})]
                  spids: [1465 1480]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$1')}
                                  right: {(SQ <ansible-bcpc-vm2>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(SQ <10.0.100.12>)})]
                  spids: [1490 1505]
                )
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.DBracket
                              expr: 
                                (bool_expr.Binary
                                  op_id: Id.BoolBinary_GlobDEqual
                                  left: {($ Id.VSub_Number '$1')}
                                  right: {(DQ <ansible-bcpc-vm3>)}
                                )
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  action: [(C {<echo>} {(SQ <10.0.100.13>)})]
                  spids: [1515 1530]
                )
              ]
              else_action: [(C {<echo>} {(SQ <169.254.1.1>)})]
            )
          ]
        )
    )
    (C {<echo>} {(DQ <------------------------------------------->)})
    (C {<echo>} {(DQ <'Generated below is a sample cluster.yml file'>)})
    (C {<echo>} {(DQ <'Sample cluster.yml file:'>)})
    (C {<echo>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<YAML_HEAD>}
              here_end_span_id: 1587
              stdin_parts: [<'---\n'> <'cluster_name: Test-Laptop-Ansible\n'> <'nodes:\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.ForEach
      iter_name: VM
      iter_words: [{<ansible-bcpc-bootstrap>} {($ Id.VSub_DollarName '$VMS')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MAC_ADDRESS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (C {<VBoxManage>} {<showvminfo>} {<--machinereadable>} 
                                {($ Id.VSub_DollarName '$VM')}
                              )
                              (C {<pcregrep>} {<-o1>} {<-M>} 
                                {(SQ <'^hostonlyadapter\\d="vboxnet0"$\\n*^macaddress\\d="(.+)"'>)}
                              )
                              (C {($ Id.VSub_DollarName '$SED')} 
                                {(SQ <'s/^(..)(..)(..)(..)(..)(..)$/\\1:\\2:\\3:\\4:\\5:\\6/'>)}
                              )
                            ]
                            negated: F
                          )
                      )
                    }
                  spids: [1603]
                )
              ]
            )
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EoF>}
                      here_end_span_id: 1665
                      stdin_parts: [
                        <'  '>
                        ($ Id.VSub_DollarName '$VM')
                        <':\n'>
                        <'    domain: bcpc.example.com\n'>
                        <'    hardware_type: Virtual\n'>
                        <'    ip_address: '>
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<get_node_ip>} {($ Id.VSub_DollarName '$VM')})
                        )
                        <'\n'>
                        <'    ipmi_address:\n'>
                        <'    mac_address: '>
                        ($ Id.VSub_DollarName '$MAC_ADDRESS')
                        <'\n'>
                        <'    role: '>
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: (C {<get_node_role>} {($ Id.VSub_DollarName '$VM')})
                        )
                        <'\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
          ]
        )
    )
  ]
)