(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:includedir)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$1'))}
          spids: [48]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:objpfx)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$2'))}
          spids: [53]
        )
      ]
    )
    (C {<cd>} {(DQ ($ Id.VSub_DollarName '$objpfx'))})
    (C {<shopt>} {<-s>} {<nullglob>})
    (C {<exec>} {(${ Id.VSub_Name AWK)} {<-v>} 
      {<Id.Lit_VarLike 'includedir='> (DQ ($ Id.VSub_DollarName '$includedir'))} 
      {
        (SQ <'\n'> <'BEGIN {\n'> <'  status = 0\n'> <'  exclude = "^" includedir \\\n'> 
          <
'    "/(.*-.*-.*/|)(asm[-/]|arch|linux/|selinux/|mach/|device/|hurd/(((hurd|ioctl)_types|paths)\\\\.h|ioctls\\\\.defs)|cthreads\\\\.h|gd|nss3/|c\\\\+\\\\+/|sys/(capability|sdt(|-config))\\\\.h|libaudit\\\\.h)"\n'
          > <'}\n'> <'/^[^ ]/ && $1 ~ /.*:/ { obj = $1 }\n'> <'{\n'> <'  for (i = 1; i <= NF; ++i) {\n'> 
          <'    if ($i ~ ("^" includedir) && $i !~ exclude) {\n'> <'      print "***", obj, "uses", $i\n'> <'      status = 1\n'> <'    }\n'> <'  }\n'> <'}\n'> 
          <'END { exit status }'>
        )
      } 
      (word.BracedTree
        parts: [
          <Id.Lit_Star '*'>
          <'/'>
          <Id.Lit_Star '*'>
          <.>
          (word_part.BracedTuple words:[{<o>} {<os>} {<oS>}])
          <.d>
        ]
      )
    )
  ]
)