(CommandList
  children: [
    (C {(set)} {(-e)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:nanobsd_sh)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(realpath)} {($ VSub_Number '$0')})])
                left_token: <Left_Backtick '`'>
                spids: [91 95]
              )
            }
          spids: [90]
        )
      ]
      spids: [90]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:topdir)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(dirname)} {(${ VSub_Name nanobsd_sh)})])
                left_token: <Left_Backtick '`'>
                spids: [98 104]
              )
            }
          spids: [97]
        )
      ]
      spids: [97]
    )
    (C {(.)} {(DQ (${ VSub_Name topdir) (/defaults.sh))})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_clean) op:Equal rhs:{(true)} spids:[123])]
      spids: [123]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_kernel) op:Equal rhs:{(true)} spids:[126])]
      spids: [126]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_installkernel) op:Equal rhs:{(true)} spids:[129])]
      spids: [129]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_world) op:Equal rhs:{(true)} spids:[132])]
      spids: [132]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_image) op:Equal rhs:{(true)} spids:[135])]
      spids: [135]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_copyout_partition) op:Equal rhs:{(true)} spids:[138])]
      spids: [138]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:do_native_xtools) op:Equal rhs:{(false)} spids:[141])]
      spids: [141]
    )
    (C {(set)} {(Lit_Other '+') (e)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:args)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(getopt)} {(KXbc) (Lit_Other ':') (fhiknqvw)} {($ VSub_Star '$*')})]
                  )
                left_token: <Left_Backtick '`'>
                spids: [151 159]
              )
            }
          spids: [150]
        )
      ]
      spids: [150]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-ne)} {(0)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(usage)}) (C {(exit)} {(2)})]
          spids: [-1 175]
        )
      ]
      spids: [-1 185]
    )
    (C {(set)} {(-e)})
    (C {(set)} {(--)} {($ VSub_Name '$args')})
    (ForEach
      iter_name: i
      do_arg_iter: True
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Name '$i'))}
              arms: [
                (case_arm
                  pat_list: [{(-K)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_installkernel)
                          op: Equal
                          rhs: {(false)}
                          spids: [219]
                        )
                      ]
                      spids: [219]
                    )
                    (C {(shift)})
                  ]
                  spids: [215 216 226 -1]
                )
                (case_arm
                  pat_list: [{(-X)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_native_xtools)
                          op: Equal
                          rhs: {(true)}
                          spids: [233]
                        )
                      ]
                      spids: [233]
                    )
                    (C {(shift)})
                  ]
                  spids: [229 230 240 -1]
                )
                (case_arm
                  pat_list: [{(-b)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_world)
                          op: Equal
                          rhs: {(false)}
                          spids: [247]
                        )
                      ]
                      spids: [247]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_kernel)
                          op: Equal
                          rhs: {(false)}
                          spids: [251]
                        )
                      ]
                      spids: [251]
                    )
                    (C {(shift)})
                  ]
                  spids: [243 244 258 -1]
                )
                (case_arm
                  pat_list: [{(-c)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:NANO_CONFIG)
                          op: Equal
                          rhs: {($ VSub_Number '$2')}
                          spids: [277]
                        )
                      ]
                      spids: [277]
                    )
                    (C {(.)} {(DQ ($ VSub_Number '$2'))})
                    (C {(shift)})
                    (C {(shift)})
                  ]
                  spids: [261 262 294 -1]
                )
                (case_arm
                  pat_list: [{(-f)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_copyout_partition)
                          op: Equal
                          rhs: {(false)}
                          spids: [301]
                        )
                      ]
                      spids: [301]
                    )
                    (C {(shift)})
                  ]
                  spids: [297 298 308 -1]
                )
                (case_arm
                  pat_list: [{(-h)}]
                  action: [(C {(usage)})]
                  spids: [311 312 318 -1]
                )
                (case_arm
                  pat_list: [{(-i)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_image)
                          op: Equal
                          rhs: {(false)}
                          spids: [325]
                        )
                      ]
                      spids: [325]
                    )
                    (C {(shift)})
                  ]
                  spids: [321 322 332 -1]
                )
                (case_arm
                  pat_list: [{(-k)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_kernel)
                          op: Equal
                          rhs: {(false)}
                          spids: [339]
                        )
                      ]
                      spids: [339]
                    )
                    (C {(shift)})
                  ]
                  spids: [335 336 346 -1]
                )
                (case_arm
                  pat_list: [{(-n)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_clean)
                          op: Equal
                          rhs: {(false)}
                          spids: [353]
                        )
                      ]
                      spids: [353]
                    )
                    (C {(shift)})
                  ]
                  spids: [349 350 360 -1]
                )
                (case_arm
                  pat_list: [{(-q)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:PPLEVEL)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Minus
                                    left: (ArithWord w:{($ VSub_Name '$PPLEVEL')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [368 375]
                              )
                            }
                          spids: [367]
                        )
                      ]
                      spids: [367]
                    )
                    (C {(shift)})
                  ]
                  spids: [363 364 381 -1]
                )
                (case_arm
                  pat_list: [{(-v)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:PPLEVEL)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Name '$PPLEVEL')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [389 396]
                              )
                            }
                          spids: [388]
                        )
                      ]
                      spids: [388]
                    )
                    (C {(shift)})
                  ]
                  spids: [384 385 402 -1]
                )
                (case_arm
                  pat_list: [{(-w)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:do_world)
                          op: Equal
                          rhs: {(false)}
                          spids: [409]
                        )
                      ]
                      spids: [409]
                    )
                    (C {(shift)})
                  ]
                  spids: [405 406 416 -1]
                )
                (case_arm
                  pat_list: [{(--)}]
                  action: [(C {(shift)}) (ControlFlow token:<ControlFlow_Break break>)]
                  spids: [419 420 -1 429]
                )
              ]
              spids: [205 212 429]
            )
          ]
          spids: [202 431]
        )
      spids: [-1 -1]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (C {(echo)} {(DQ ($ VSub_Number '$0') (': Extraneous arguments supplied'))})
            (C {(usage)})
          ]
          spids: [-1 448]
        )
      ]
      spids: [-1 461]
    )
    (SimpleCommand
      words: [{(exec)}]
      redirects: [(Redir op_id:Redir_GreatAnd fd:3 arg_word:{(1)} spids:[476])]
    )
    (C {(set_defaults_and_export)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other '[')} {(KW_Bang '!')} {(-d)} {(DQ (${ VSub_Name NANO_TOOLS))} 
                  {(Lit_Other ']')}
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [{(echo)} {(DQ ('NANO_TOOLS directory does not exist'))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[508])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 499]
        )
      ]
      spids: [-1 516]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (Pipeline children:[(C {($ VSub_Name '$do_clean')})] negated:True)
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NANO_PMAKE)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name NANO_PMAKE) (' -DNO_CLEAN'))}
                  spids: [529]
                )
              ]
              spids: [529]
            )
          ]
          spids: [-1 526]
        )
      ]
      spids: [-1 537]
    )
    (C {(pprint)} {(1)} {(DQ ('NanoBSD image ') (${ VSub_Name NANO_NAME) (' build starting'))})
    (C {(run_early_customize)})
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(C {($ VSub_Name '$do_world')}) terminator:<Op_Semi ';'>)]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [(Sentence child:(C {($ VSub_Name '$do_clean')}) terminator:<Op_Semi ';'>)]
                  action: [(C {(clean_build)})]
                  spids: [-1 571]
                )
              ]
              else_action: [(C {(pprint)} {(2)} {(DQ ('Using existing build tree (as instructed)'))})]
              spids: [577 589]
            )
            (C {(make_conf_build)})
            (C {(build_world)})
          ]
          spids: [-1 562]
        )
      ]
      else_action: [(C {(pprint)} {(2)} {(DQ ('Skipping buildworld (as instructed)'))})]
      spids: [597 608]
    )
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(C {($ VSub_Name '$do_kernel')}) terminator:<Op_Semi ';'>)]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: (Pipeline children:[(C {($ VSub_Name '$do_world')})] negated:True)
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [(C {(make_conf_build)})]
                  spids: [-1 628]
                )
              ]
              spids: [-1 634]
            )
            (C {(build_kernel)})
          ]
          spids: [-1 617]
        )
      ]
      else_action: [(C {(pprint)} {(2)} {(DQ ('Skipping buildkernel (as instructed)'))})]
      spids: [639 650]
    )
    (C {(clean_world)})
    (C {(make_conf_install)})
    (C {(install_world)})
    (C {(install_etc)})
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(C {($ VSub_Name '$do_native_xtools')}) terminator:<Op_Semi ';'>)]
          action: [(C {(native_xtools)})]
          spids: [-1 667]
        )
      ]
      spids: [-1 672]
    )
    (C {(setup_nanobsd_etc)})
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(C {($ VSub_Name '$do_installkernel')}) terminator:<Op_Semi ';'>)]
          action: [(C {(install_kernel)})]
          spids: [-1 682]
        )
      ]
      else_action: [(C {(pprint)} {(2)} {(DQ ('Skipping installkernel (as instructed)'))})]
      spids: [687 698]
    )
    (C {(run_customize)})
    (C {(setup_nanobsd)})
    (C {(prune_usr)})
    (C {(run_late_customize)})
    (C {(fixup_before_diskimage)})
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(C {($ VSub_Name '$do_image')}) terminator:<Op_Semi ';'>)]
          action: [(C {(create_diskimage)})]
          spids: [-1 717]
        )
      ]
      else_action: [(C {(pprint)} {(2)} {(DQ ('Skipping image build (as instructed)'))})]
      spids: [722 733]
    )
    (C {(last_orders)})
    (C {(pprint)} {(1)} {(DQ ('NanoBSD image ') (${ VSub_Name NANO_NAME) (' completed'))})
  ]
)