(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:kdir)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Number 1>
                suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(..) (Lit_Slash /) (kernel)})
                spids: [1 7]
              )
            }
          spids: [0]
        )
      ]
      spids: [0]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:scriptdir)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(dirname)} {($ VSub_Number "$0")})])
                left_token: <Left_CommandSub "$(">
                spids: [10 14]
              )
            }
          spids: [9]
        )
      ]
      spids: [9]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:udir)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(dirname)} {($ VSub_Name "$scriptdir")})])
                left_token: <Left_CommandSub "$(">
                spids: [17 21]
              )
            }
          spids: [16]
        )
      ]
      spids: [16]
    )
    (Pipeline
      children: [
        (C {(cat)} {($ VSub_Name "$scriptdir") (/kernel-files.txt)})
        (Subshell
          child: 
            (While
              cond: [(Sentence child:(C {(read)} {(l)} {(r)}) terminator:<Op_Semi ";">)]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:left)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(eval)} {(echo)} {($ VSub_Name "$l")})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [45 51]
                              )
                            }
                          spids: [44]
                        )
                      ]
                      spids: [44]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:right)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(eval)} {(echo)} {($ VSub_Name "$r")})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [55 61]
                              )
                            }
                          spids: [54]
                        )
                      ]
                      spids: [54]
                    )
                    (C {(diff)} {(-up)} {($ VSub_Name "$left")} {($ VSub_Name "$right")})
                  ]
                  spids: [41 75]
                )
            )
          spids: [31 76]
        )
      ]
      negated: False
    )
  ]
)