(CommandList
  children: [
    (C {(Lit_Other ":")} {(mkdir)} {(KW_For for)} {(systems)} {(that)} {(KW_Do do)} {(not)} {(support)} {(-p)} 
      {(Lit_Other ":")} {(2002-09-01)} {(Lit_Other ":")}
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:MKDIR) op:Equal rhs:{(/bin/mkdir)} spids:[84])]
      spids: [84]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:CHMOD) op:Equal rhs:{(chmod)} spids:[87])]
      spids: [87]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:mode) op:Equal rhs:{(SQ )} spids:[90])]
      spids: [90]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:parents) op:Equal rhs:{(SQ )} spids:[92])]
      spids: [92]
    )
    (While
      cond: [(C {(Lit_Other ":")})]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Number "$1")}
              arms: [
                (case_arm
                  pat_list: [{(-m)}]
                  action: [
                    (Case
                      to_match: {($ VSub_Pound "$#")}
                      arms: [
                        (case_arm
                          pat_list: [{(1)}]
                          action: [
                            (SimpleCommand
                              words: [{(echo)} {(DQ ("mkdir: -m: mode argument expected"))}]
                              redirects: [
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: -1
                                  arg_word: {(2)}
                                  spids: [126]
                                )
                              ]
                            )
                            (C {(exit)} {(1)})
                          ]
                          spids: [117 118 135 -1]
                        )
                      ]
                      spids: [110 114 138]
                    )
                    (C {(shift)})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:mode)
                          op: Equal
                          rhs: {($ VSub_Number "$1")}
                          spids: [144]
                        )
                      ]
                      spids: [144]
                    )
                  ]
                  spids: [107 108 148 -1]
                )
                (case_arm
                  pat_list: [{(-m) (Lit_Other "*")}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:mode)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(echo)} {(X) ($ VSub_Number "$1")})
                                          (C {(sed)} {(SQ <s/X-m//>)})
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_Backtick "`">
                                spids: [156 169]
                              )
                            }
                          spids: [155]
                        )
                      ]
                      spids: [155]
                    )
                  ]
                  spids: [151 153 172 -1]
                )
                (case_arm
                  pat_list: [{(-p)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:parents) op:Equal rhs:{(1)} spids:[178])]
                      spids: [178]
                    )
                  ]
                  spids: [175 176 182 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [(ControlFlow token:<ControlFlow_Break break>)]
                  spids: [185 186 191 -1]
                )
              ]
              spids: [100 104 194]
            )
            (C {(shift)})
          ]
          spids: [98 199]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test)} {(DQ )} {(KW_Bang "!") (Lit_Other "=")} {(DQ ($ VSub_Name "$parents"))})]
          action: [
            (ForEach
              iter_name: d
              do_arg_iter: True
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(KW_Bang "!")} {(-d)} {($ VSub_Name "$d")})]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:ifs)
                                  op: Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name IFS>
                                        suffix_op: 
                                          (StringUnary
                                            op_id: VTest_Hyphen
                                            arg_word: {(SQ <"\n"> <"\t ">)}
                                          )
                                        spids: [238 245]
                                      )
                                    }
                                  spids: [237]
                                )
                              ]
                              spids: [237]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:IFS)
                                  op: Equal
                                  rhs: {(/)}
                                  spids: [248]
                                )
                              ]
                              spids: [248]
                            )
                            (C {(set)} {(SQ )} {($ VSub_Name "$d")})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:IFS)
                                  op: Equal
                                  rhs: {($ VSub_Name "$ifs")}
                                  spids: [260]
                                )
                              ]
                              spids: [260]
                            )
                            (C {(shift)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:dir)
                                  op: Equal
                                  rhs: {($ VSub_Number "$1")}
                                  spids: [267]
                                )
                              ]
                              spids: [267]
                            )
                            (C {(shift)})
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (C {(test)} {(-n)} {(DQ ($ VSub_Name "$dir"))} {(-a)} {(KW_Bang "!")} 
                                      {(-d)} {(DQ ($ VSub_Name "$dir"))}
                                    )
                                  ]
                                  action: [
                                    (AndOr
                                      children: [
                                        (C {($ VSub_Name "$MKDIR")} {(DQ ($ VSub_Name "$dir"))})
                                        (C {(exit)} {(1)})
                                      ]
                                      op_id: Op_DPipe
                                    )
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (C {(test)} {(DQ )} {(KW_Bang "!") (Lit_Other "=")} 
                                              {(DQ ($ VSub_Name "$mode"))}
                                            )
                                          ]
                                          action: [
                                            (AndOr
                                              children: [
                                                (C {($ VSub_Name "$CHMOD")} {(DQ ($ VSub_Name "$mode"))} 
                                                  {(DQ ($ VSub_Name "$dir"))}
                                                )
                                                (C {(exit)} {(1)})
                                              ]
                                              op_id: Op_DPipe
                                            )
                                          ]
                                          spids: [-1 325]
                                        )
                                      ]
                                      spids: [-1 344]
                                    )
                                  ]
                                  spids: [-1 295]
                                )
                              ]
                              spids: [-1 347]
                            )
                            (ForEach
                              iter_name: d
                              do_arg_iter: True
                              body: 
                                (DoGroup
                                  children: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:dir)
                                          op: Equal
                                          rhs: {($ VSub_Name "$dir") (/) ($ VSub_Name "$d")}
                                          spids: [357]
                                        )
                                      ]
                                      spids: [357]
                                    )
                                    (If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (C {(test)} {(KW_Bang "!")} {(-d)} {(DQ ($ VSub_Name "$dir"))})
                                          ]
                                          action: [
                                            (AndOr
                                              children: [
                                                (C {($ VSub_Name "$MKDIR")} {(DQ ($ VSub_Name "$dir"))})
                                                (C {(exit)} {(1)})
                                              ]
                                              op_id: Op_DPipe
                                            )
                                            (If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (C {(test)} {(DQ )} {(KW_Bang "!") (Lit_Other "=")} 
                                                      {(DQ ($ VSub_Name "$mode"))}
                                                    )
                                                  ]
                                                  action: [
                                                    (AndOr
                                                      children: [
                                                        (C {($ VSub_Name "$CHMOD")} 
                                                          {(DQ ($ VSub_Name "$mode"))} {(DQ ($ VSub_Name "$dir"))}
                                                        )
                                                        (C {(exit)} {(1)})
                                                      ]
                                                      op_id: Op_DPipe
                                                    )
                                                  ]
                                                  spids: [-1 406]
                                                )
                                              ]
                                              spids: [-1 425]
                                            )
                                          ]
                                          spids: [-1 376]
                                        )
                                      ]
                                      spids: [-1 428]
                                    )
                                  ]
                                  spids: [355 431]
                                )
                              spids: [-1 -1]
                            )
                          ]
                          spids: [-1 235]
                        )
                      ]
                      spids: [-1 434]
                    )
                  ]
                  spids: [222 437]
                )
              spids: [-1 -1]
            )
          ]
          spids: [-1 215]
        )
      ]
      else_action: [
        (AndOr
          children: [(C {($ VSub_Name "$MKDIR")} {(DQ ($ VSub_At "$@"))}) (C {(exit)} {(1)})]
          op_id: Op_DPipe
        )
        (If
          arms: [
            (if_arm
              cond: [(C {(test)} {(DQ )} {(KW_Bang "!") (Lit_Other "=")} {(DQ ($ VSub_Name "$mode"))})]
              action: [
                (ForEach
                  iter_name: d
                  do_arg_iter: True
                  body: 
                    (DoGroup
                      children: [
                        (AndOr
                          children: [
                            (C {($ VSub_Name "$CHMOD")} {(DQ ($ VSub_Name "$mode"))} 
                              {(DQ ($ VSub_Name "$d"))}
                            )
                            (C {(exit)} {(1)})
                          ]
                          op_id: Op_DPipe
                        )
                      ]
                      spids: [476 495]
                    )
                  spids: [-1 -1]
                )
              ]
              spids: [-1 469]
            )
          ]
          spids: [-1 498]
        )
      ]
      spids: [439 500]
    )
    (C {(exit)} {(0)})
  ]
)