(CommandList
  children: [
    (FuncDef
      name: macro
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:n)
                  op: Equal
                  rhs: {(${ VSub_Number 1)}
                  spids: [100]
                )
              ]
              spids: [100]
            )
            (C {(shift)})
            (C {(echo)} {(-n)} {(DQ ('#define bus_') (${ VSub_Name n) ('(r'))})
            (ForEach
              iter_name: i
              do_arg_iter: T
              body: 
                (DoGroup
                  children: [(C {(echo)} {(-n)} {(DQ (', ') (${ VSub_Name i))})]
                  spids: [127 142]
                )
              spids: [16777215 16777215]
            )
            (C {(echo)} {(DQ (') ') (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>))})
            (C {(echo)} {(-n)} 
              {(DQ ('\tbus_space_') (${ VSub_Name n) ('((r)->r_bustag, (r)->r_bushandle'))}
            )
            (ForEach
              iter_name: i
              do_arg_iter: T
              body: 
                (DoGroup
                  children: [(C {(echo)} {(-n)} {(DQ (', (') (${ VSub_Name i) (')'))})]
                  spids: [171 187]
                )
              spids: [16777215 16777215]
            )
            (C {(echo)} {(DQ (')'))})
          ]
          spids: [96]
        )
      spids: [91 95]
    )
    (C {(macro)} {(barrier)} {(o)} {(l)} {(f)})
    (ForEach
      iter_name: w
      iter_words: [{(1)} {(2)} {(4)} {(8)}]
      do_arg_iter: F
      body: 
        (DoGroup
          children: [
            (ForEach
              iter_name: s
              iter_words: [{(DQ )} {(stream_)}]
              do_arg_iter: F
              body: 
                (DoGroup
                  children: [
                    (C {(macro)} {(read_) ($ VSub_Name '$s') ($ VSub_Name '$w')} {(o)})
                    (C {(macro)} {(read_multi_) ($ VSub_Name '$s') ($ VSub_Name '$w')} {(o)} {(d)} {(c)})
                    (C {(macro)} {(read_region_) ($ VSub_Name '$s') ($ VSub_Name '$w')} {(o)} {(d)} {(c)})
                    (C {(macro)} {(set_multi_) ($ VSub_Name '$s') ($ VSub_Name '$w')} {(o)} {(v)} {(c)})
                    (C {(macro)} {(set_region_) ($ VSub_Name '$s') ($ VSub_Name '$w')} {(o)} {(v)} {(c)})
                    (C {(macro)} {(write_) ($ VSub_Name '$s') ($ VSub_Name '$w')} {(o)} {(v)})
                    (C {(macro)} {(write_multi_) ($ VSub_Name '$s') ($ VSub_Name '$w')} {(o)} {(d)} {(c)})
                    (C {(macro)} {(write_region_) ($ VSub_Name '$s') ($ VSub_Name '$w')} {(o)} {(d)} {(c)})
                  ]
                  spids: [251 352]
                )
              spids: [244 16777215]
            )
          ]
          spids: [224 354]
        )
      spids: [215 16777215]
    )
  ]
)