(CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (FuncDef
      name: replace-print
      body: 
        (BraceGroup
          children: [
            (C {(grep)} {(SQ <'print '>)} 
              (BracedWordTree
                parts: [(BracedAltPart words:[{(osh)}{(core)}]) (/) (Lit_Other '*') (.py)]
              )
            )
          ]
          spids: [45]
        )
      spids: [41 44]
    )
    (FuncDef
      name: make-bin-links
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:links)
                  op: Equal
                  rhs: {(SQ <'oil osh sh wok boil true false'>)}
                  spids: [89]
                )
              ]
              spids: [89]
            )
            (C {(mkdir)} {(-p)} {(bin)} {(_bin)})
            (ForEach
              iter_name: link
              iter_words: [{($ VSub_Name '$links')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(ln)} {(-s)} {(-f)} {(--verbose)} {(oil.py)} {(bin/) ($ VSub_Name '$link')})
                  ]
                  spids: [115 132]
                )
              spids: [110 113]
            )
            (ForEach
              iter_name: link
              iter_words: [{($ VSub_Name '$links')}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (C {(ln)} {(-s)} {(-f)} {(--verbose)} {(oil.ovm)} {(_bin/) ($ VSub_Name '$link')})
                  ]
                  spids: [145 162]
                )
              spids: [141 143]
            )
          ]
          spids: [78]
        )
      spids: [74 77]
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)