(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:SYSFS) op:Equal rhs:{(SQ )} spids:[4])]
      spids: [4]
    )
    (FuncDef
      name: prerequisite
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msg)
                  op: Equal
                  rhs: {(DQ ("skip all tests:"))}
                  spids: [14]
                )
              ]
              spids: [14]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {($ VSub_Name "$UID")} {(KW_Bang "!") (Lit_Other "=")} {(0)} 
                          {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {($ VSub_Name "$msg")} {(must)} {(be)} {(run)} {(as)} {(root)}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[52])]
                    )
                    (C {(exit)} {(0)})
                  ]
                  spids: [-1 35]
                )
              ]
              spids: [-1 61]
            )
            (C {(taskset)} {(-p)} {(01)} {($ VSub_Dollar "$$")})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:SYSFS)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(mount)} {(-t)} {(sysfs)})
                                  (C {(head)} {(-1)})
                                  (C {(awk)} {(SQ <"{ print $3 }">)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_Backtick "`">
                        spids: [76 96]
                      )
                    }
                  spids: [75]
                )
              ]
              spids: [75]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(KW_Bang "!")} {(-d)} {(DQ ($ VSub_Name "$SYSFS"))} 
                          {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {($ VSub_Name "$msg")} {(sysfs)} {(is)} {(not)} {(mounted)}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[130])]
                    )
                    (C {(exit)} {(0)})
                  ]
                  spids: [-1 115]
                )
              ]
              spids: [-1 139]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [
                            (SimpleCommand
                              words: [
                                {(ls)}
                                {($ VSub_Name "$SYSFS") (/devices/system/cpu/cpu) (Lit_Other "*")}
                              ]
                              redirects: [
                                (Redir
                                  op_id: Redir_Great
                                  fd: -1
                                  arg_word: {(/dev/null)}
                                  spids: [153]
                                )
                                (Redir
                                  op_id: Redir_GreatAnd
                                  fd: 2
                                  arg_word: {(1)}
                                  spids: [157]
                                )
                              ]
                            )
                          ]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {($ VSub_Name "$msg")}
                        {(cpu)}
                        {(hotplug)}
                        {(is)}
                        {(not)}
                        {(supported)}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[178])]
                    )
                    (C {(exit)} {(0)})
                  ]
                  spids: [-1 161]
                )
              ]
              spids: [-1 187]
            )
            (C {(echo)} {(DQ ("CPU online/offline summary:"))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:online_cpus)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(cat)} {($ VSub_Name "$SYSFS") (/devices/system/cpu/online)})
                            ]
                          )
                        left_token: <Left_Backtick "`">
                        spids: [199 204]
                      )
                    }
                  spids: [198]
                )
              ]
              spids: [198]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:online_max)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name online_cpus>
                        suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{("*-")})
                        spids: [208 212]
                      )
                    }
                  spids: [207]
                )
              ]
              spids: [207]
            )
            (C {(echo)} {(-e)} 
              {
                (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) (" Cpus in online state: ") 
                  ($ VSub_Name "$online_cpus")
                )
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:offline_cpus)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(cat)} {($ VSub_Name "$SYSFS") (/devices/system/cpu/offline)})
                            ]
                          )
                        left_token: <Left_Backtick "`">
                        spids: [228 233]
                      )
                    }
                  spids: [227]
                )
              ]
              spids: [227]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_GlobEqual
                              left: {(DQ (a) ($ VSub_Name "$offline_cpus"))}
                              right: {(DQ (a))}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:offline_cpus)
                          op: Equal
                          rhs: {(0)}
                          spids: [257]
                        )
                      ]
                      spids: [257]
                    )
                  ]
                  spids: [-1 254]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:offline_max)
                      op: Equal
                      rhs: 
                        {
                          (BracedVarSub
                            token: <VSub_Name offline_cpus>
                            suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{("*-")})
                            spids: [265 269]
                          )
                        }
                      spids: [264]
                    )
                  ]
                  spids: [264]
                )
              ]
              spids: [261 272]
            )
            (C {(echo)} {(-e)} 
              {
                (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) (" Cpus in offline state: ") 
                  ($ VSub_Name "$offline_cpus")
                )
              }
            )
          ]
          spids: [11]
        )
      spids: [7 10]
    )
    (FuncDef
      name: hotpluggable_cpus
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:state)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Number 1>
                        suffix_op: 
                          (StringUnary
                            op_id: VTest_ColonHyphen
                            arg_word: {(.) (EscapedLiteralPart token:<Lit_EscapedChar "\\*">)}
                          )
                        spids: [307 312]
                      )
                    }
                  spids: [306]
                )
              ]
              spids: [304]
            )
            (ForEach
              iter_name: cpu
              iter_words: [{($ VSub_Name "$SYSFS") (/devices/system/cpu/cpu) (Lit_Other "*")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (AndOr
                                  children: [
                                    (C {(Lit_Other "[")} {(-f)} {($ VSub_Name "$cpu") (/online)} 
                                      {(Lit_Other "]")}
                                    )
                                    (C {(grep)} {(-q)} {($ VSub_Name "$state")} 
                                      {($ VSub_Name "$cpu") (/online)}
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              terminator: <Op_Semi ";">
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (BracedVarSub
                                  token: <VSub_Name cpu>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VOp1_DPound
                                      arg_word: {(Lit_Slash /) ("*") (Lit_Slash /) (cpu)}
                                    )
                                  spids: [358 365]
                                )
                              }
                            )
                          ]
                          spids: [-1 353]
                        )
                      ]
                      spids: [-1 368]
                    )
                  ]
                  spids: [327 371]
                )
              spids: [321 325]
            )
          ]
          spids: [301]
        )
      spids: [297 300]
    )
    (FuncDef
      name: hotplaggable_offline_cpus
      body: (BraceGroup children:[(C {(hotpluggable_cpus)} {(0)})] spids:[380])
      spids: [376 379]
    )
    (FuncDef
      name: hotpluggable_online_cpus
      body: (BraceGroup children:[(C {(hotpluggable_cpus)} {(1)})] spids:[394])
      spids: [390 393]
    )
    (FuncDef
      name: cpu_is_online
      body: 
        (BraceGroup
          children: [
            (C {(grep)} {(-q)} {(1)} 
              {($ VSub_Name "$SYSFS") (/devices/system/cpu/cpu) ($ VSub_Number "$1") (/online)}
            )
          ]
          spids: [408]
        )
      spids: [404 407]
    )
    (FuncDef
      name: cpu_is_offline
      body: 
        (BraceGroup
          children: [
            (C {(grep)} {(-q)} {(0)} 
              {($ VSub_Name "$SYSFS") (/devices/system/cpu/cpu) ($ VSub_Number "$1") (/online)}
            )
          ]
          spids: [429]
        )
      spids: [425 428]
    )
    (FuncDef
      name: online_cpu
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(1)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: 
                    {($ VSub_Name "$SYSFS") (/devices/system/cpu/cpu) ($ VSub_Number "$1") (/online)}
                  spids: [457]
                )
              ]
            )
          ]
          spids: [450]
        )
      spids: [446 449]
    )
    (FuncDef
      name: offline_cpu
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(echo)} {(0)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: 
                    {($ VSub_Name "$SYSFS") (/devices/system/cpu/cpu) ($ VSub_Number "$1") (/online)}
                  spids: [478]
                )
              ]
            )
          ]
          spids: [471]
        )
      spids: [467 470]
    )
    (FuncDef
      name: online_cpu_expect_success
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cpu)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [497]
                )
              ]
              spids: [495]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(online_cpu)} {($ VSub_Name "$cpu")})]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {($ VSub_Name "$FUNCNAME")}
                        {($ VSub_Name "$cpu") (Lit_Other ":")}
                        {(unexpected)}
                        {(fail)}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[525])]
                    )
                  ]
                  spids: [-1 511]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(cpu_is_online)} {($ VSub_Name "$cpu")})]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {($ VSub_Name "$FUNCNAME")}
                        {($ VSub_Name "$cpu") (Lit_Other ":")}
                        {(unexpected)}
                        {(offline)}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[552])]
                    )
                  ]
                  spids: [529 538]
                )
              ]
              spids: [-1 556]
            )
          ]
          spids: [492]
        )
      spids: [488 491]
    )
    (FuncDef
      name: online_cpu_expect_fail
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cpu)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [570]
                )
              ]
              spids: [568]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(online_cpu)} {($ VSub_Name "$cpu")}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [581]
                            )
                          ]
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {($ VSub_Name "$FUNCNAME")}
                        {($ VSub_Name "$cpu") (Lit_Other ":")}
                        {(unexpected)}
                        {(success)}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[600])]
                    )
                  ]
                  spids: [-1 586]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(cpu_is_offline)} {($ VSub_Name "$cpu")})]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {($ VSub_Name "$FUNCNAME")}
                        {($ VSub_Name "$cpu") (Lit_Other ":")}
                        {(unexpected)}
                        {(online)}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[627])]
                    )
                  ]
                  spids: [604 613]
                )
              ]
              spids: [-1 631]
            )
          ]
          spids: [565]
        )
      spids: [561 564]
    )
    (FuncDef
      name: offline_cpu_expect_success
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cpu)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [645]
                )
              ]
              spids: [643]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(offline_cpu)} {($ VSub_Name "$cpu")})]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {($ VSub_Name "$FUNCNAME")}
                        {($ VSub_Name "$cpu") (Lit_Other ":")}
                        {(unexpected)}
                        {(fail)}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[673])]
                    )
                  ]
                  spids: [-1 659]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(cpu_is_offline)} {($ VSub_Name "$cpu")})]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {($ VSub_Name "$FUNCNAME")}
                        {($ VSub_Name "$cpu") (Lit_Other ":")}
                        {(unexpected)}
                        {(offline)}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[700])]
                    )
                  ]
                  spids: [677 686]
                )
              ]
              spids: [-1 704]
            )
          ]
          spids: [640]
        )
      spids: [636 639]
    )
    (FuncDef
      name: offline_cpu_expect_fail
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cpu)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [718]
                )
              ]
              spids: [716]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (SimpleCommand
                          words: [{(offline_cpu)} {($ VSub_Name "$cpu")}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [729]
                            )
                          ]
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {($ VSub_Name "$FUNCNAME")}
                        {($ VSub_Name "$cpu") (Lit_Other ":")}
                        {(unexpected)}
                        {(success)}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[748])]
                    )
                  ]
                  spids: [-1 734]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (Pipeline
                          children: [(C {(cpu_is_online)} {($ VSub_Name "$cpu")})]
                          negated: True
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {($ VSub_Name "$FUNCNAME")}
                        {($ VSub_Name "$cpu") (Lit_Other ":")}
                        {(unexpected)}
                        {(offline)}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[775])]
                    )
                  ]
                  spids: [752 761]
                )
              ]
              spids: [-1 779]
            )
          ]
          spids: [713]
        )
      spids: [709 712]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:error) op:Equal rhs:{(-12)} spids:[784])]
      spids: [784]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:allcpus) op:Equal rhs:{(0)} spids:[787])]
      spids: [787]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:priority) op:Equal rhs:{(0)} spids:[790])]
      spids: [790]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:online_cpus) op:Equal rhs:{(0)} spids:[793])]
      spids: [793]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:online_max) op:Equal rhs:{(0)} spids:[796])]
      spids: [796]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:offline_cpus) op:Equal rhs:{(0)} spids:[799])]
      spids: [799]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:offline_max) op:Equal rhs:{(0)} spids:[802])]
      spids: [802]
    )
    (While
      cond: [
        (Sentence
          child: (C {(getopts)} {(e) (Lit_Other ":") (ahp) (Lit_Other ":")} {(opt)})
          terminator: <Op_Semi ";">
        )
      ]
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {($ VSub_Name "$opt")}
              arms: [
                (case_arm
                  pat_list: [{(e)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:error)
                          op: Equal
                          rhs: {($ VSub_Name "$OPTARG")}
                          spids: [832]
                        )
                      ]
                      spids: [832]
                    )
                  ]
                  spids: [828 829 836 -1]
                )
                (case_arm
                  pat_list: [{(a)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:allcpus) op:Equal rhs:{(1)} spids:[843])]
                      spids: [843]
                    )
                  ]
                  spids: [839 840 847 -1]
                )
                (case_arm
                  pat_list: [{(h)}]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ("Usage ") ($ VSub_Number "$0") 
                          (" [ -a ] [ -e errno ] [ -p notifier-priority ]")
                        )
                      }
                    )
                    (C {(echo)} {(-e)} 
                      {
                        (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) 
                          (" default offline one cpu")
                        )
                      }
                    )
                    (C {(echo)} {(-e)} 
                      {
                        (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) 
                          (" run with -a option to offline all cpus")
                        )
                      }
                    )
                    (C {(exit)})
                  ]
                  spids: [850 851 886 -1]
                )
                (case_arm
                  pat_list: [{(p)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:priority)
                          op: Equal
                          rhs: {($ VSub_Name "$OPTARG")}
                          spids: [893]
                        )
                      ]
                      spids: [893]
                    )
                  ]
                  spids: [889 890 897 -1]
                )
              ]
              spids: [821 825 900]
            )
          ]
          spids: [818 902]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (Pipeline
                  children: [
                    (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$error"))} {(-ge)} {(-4095)} {(-a)} 
                      {(DQ ($ VSub_Name "$error"))} {(-lt)} {(0)} {(Lit_Other "]")}
                    )
                  ]
                  negated: True
                )
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (SimpleCommand
              words: [{(echo)} {(DQ ("error code must be -4095 <= errno < 0"))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[941])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 932]
        )
      ]
      spids: [-1 949]
    )
    (C {(prerequisite)})
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {($ VSub_Name "$allcpus")} {(-eq)} {(0)} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(DQ ("Limited scope test: one hotplug cpu"))})
            (C {(echo)} {(-e)} 
              {
                (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) 
                  (" (leaves cpu in the original state):")
                )
              }
            )
            (C {(echo)} {(-e)} 
              {
                (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) 
                  (" online to offline to online: cpu ") ($ VSub_Name "$online_max")
                )
              }
            )
            (C {(offline_cpu_expect_success)} {($ VSub_Name "$online_max")})
            (C {(online_cpu_expect_success)} {($ VSub_Name "$online_max")})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (DBracket
                          expr: 
                            (BoolBinary
                              op_id: BoolBinary_gt
                              left: {($ VSub_Name "$offline_cpus")}
                              right: {(0)}
                            )
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (C {(echo)} {(-e)} 
                      {
                        (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) 
                          (" offline to online to offline: cpu ") ($ VSub_Name "$offline_max")
                        )
                      }
                    )
                    (C {(online_cpu_expect_success)} {($ VSub_Name "$offline_max")})
                    (C {(offline_cpu_expect_success)} {($ VSub_Name "$offline_max")})
                  ]
                  spids: [-1 1032]
                )
              ]
              spids: [-1 1056]
            )
            (C {(exit)} {(0)})
          ]
          spids: [-1 977]
        )
      ]
      else_action: [
        (C {(echo)} {(DQ ("Full scope test: all hotplug cpus"))})
        (C {(echo)} {(-e)} 
          {(DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) (" online all offline cpus"))}
        )
        (C {(echo)} {(-e)} 
          {(DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) (" offline all online cpus"))}
        )
        (C {(echo)} {(-e)} 
          {(DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\t">) (" online all offline cpus"))}
        )
      ]
      spids: [1063 1102]
    )
    (ForEach
      iter_name: cpu
      iter_words: [
        {
          (CommandSubPart
            command_list: (CommandList children:[(C {(hotplaggable_offline_cpus)})])
            left_token: <Left_Backtick "`">
            spids: [1120 1122]
          )
        }
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [(C {(online_cpu_expect_success)} {($ VSub_Name "$cpu")})]
          spids: [1125 1132]
        )
      spids: [1119 1123]
    )
    (ForEach
      iter_name: cpu
      iter_words: [
        {
          (CommandSubPart
            command_list: (CommandList children:[(C {(hotpluggable_online_cpus)})])
            left_token: <Left_Backtick "`">
            spids: [1150 1152]
          )
        }
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [(C {(offline_cpu_expect_success)} {($ VSub_Name "$cpu")})]
          spids: [1155 1162]
        )
      spids: [1149 1153]
    )
    (ForEach
      iter_name: cpu
      iter_words: [
        {
          (CommandSubPart
            command_list: (CommandList children:[(C {(hotplaggable_offline_cpus)})])
            left_token: <Left_Backtick "`">
            spids: [1180 1182]
          )
        }
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [(C {(online_cpu_expect_success)} {($ VSub_Name "$cpu")})]
          spids: [1185 1192]
        )
      spids: [1179 1183]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DEBUGFS)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(mount)} {(-t)} {(debugfs)})
                          (C {(head)} {(-1)})
                          (C {(awk)} {(SQ <"{ print $3 }">)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_Backtick "`">
                spids: [1206 1226]
              )
            }
          spids: [1205]
        )
      ]
      spids: [1205]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:NOTIFIER_ERR_INJECT_DIR)
          op: Equal
          rhs: {($ VSub_Name "$DEBUGFS") (/notifier-error-inject/cpu)}
          spids: [1228]
        )
      ]
      spids: [1228]
    )
    (FuncDef
      name: prerequisite_extra
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msg)
                  op: Equal
                  rhs: {(DQ ("skip extra tests:"))}
                  spids: [1240]
                )
              ]
              spids: [1240]
            )
            (C {(/sbin/modprobe)} {(-q)} {(-r)} {(cpu-notifier-error-inject)})
            (C {(/sbin/modprobe)} {(-q)} {(cpu-notifier-error-inject)} 
              {(Lit_VarLike "priority=") ($ VSub_Name "$priority")}
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(KW_Bang "!")} {(-d)} {(DQ ($ VSub_Name "$DEBUGFS"))} 
                          {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {($ VSub_Name "$msg")} {(debugfs)} {(is)} {(not)} {(mounted)}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1297])]
                    )
                    (C {(exit)} {(0)})
                  ]
                  spids: [-1 1282]
                )
              ]
              spids: [-1 1306]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other "[")} {(KW_Bang "!")} {(-d)} 
                          {($ VSub_Name "$NOTIFIER_ERR_INJECT_DIR")} {(Lit_Other "]")}
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {($ VSub_Name "$msg")}
                        {(cpu-notifier-error-inject)}
                        {(module)}
                        {(is)}
                        {(not)}
                        {(available)}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1340])]
                    )
                    (C {(exit)} {(0)})
                  ]
                  spids: [-1 1323]
                )
              ]
              spids: [-1 1349]
            )
          ]
          spids: [1237]
        )
      spids: [1233 1236]
    )
    (C {(prerequisite_extra)})
    (SimpleCommand
      words: [{(echo)} {(0)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name "$NOTIFIER_ERR_INJECT_DIR") (/actions/CPU_DOWN_PREPARE/error)}
          spids: [1370]
        )
      ]
    )
    (ForEach
      iter_name: cpu
      iter_words: [
        {
          (CommandSubPart
            command_list: (CommandList children:[(C {(hotpluggable_online_cpus)})])
            left_token: <Left_Backtick "`">
            spids: [1381 1383]
          )
        }
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [(C {(offline_cpu_expect_success)} {($ VSub_Name "$cpu")})]
          spids: [1386 1393]
        )
      spids: [1380 1384]
    )
    (SimpleCommand
      words: [{(echo)} {($ VSub_Name "$error")}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name "$NOTIFIER_ERR_INJECT_DIR") (/actions/CPU_UP_PREPARE/error)}
          spids: [1409]
        )
      ]
    )
    (ForEach
      iter_name: cpu
      iter_words: [
        {
          (CommandSubPart
            command_list: (CommandList children:[(C {(hotplaggable_offline_cpus)})])
            left_token: <Left_Backtick "`">
            spids: [1420 1422]
          )
        }
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [(C {(online_cpu_expect_fail)} {($ VSub_Name "$cpu")})]
          spids: [1425 1432]
        )
      spids: [1419 1423]
    )
    (SimpleCommand
      words: [{(echo)} {(0)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name "$NOTIFIER_ERR_INJECT_DIR") (/actions/CPU_UP_PREPARE/error)}
          spids: [1448]
        )
      ]
    )
    (ForEach
      iter_name: cpu
      iter_words: [
        {
          (CommandSubPart
            command_list: (CommandList children:[(C {(hotplaggable_offline_cpus)})])
            left_token: <Left_Backtick "`">
            spids: [1459 1461]
          )
        }
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [(C {(online_cpu_expect_success)} {($ VSub_Name "$cpu")})]
          spids: [1464 1471]
        )
      spids: [1458 1462]
    )
    (SimpleCommand
      words: [{(echo)} {($ VSub_Name "$error")}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name "$NOTIFIER_ERR_INJECT_DIR") (/actions/CPU_DOWN_PREPARE/error)}
          spids: [1487]
        )
      ]
    )
    (ForEach
      iter_name: cpu
      iter_words: [
        {
          (CommandSubPart
            command_list: (CommandList children:[(C {(hotpluggable_online_cpus)})])
            left_token: <Left_Backtick "`">
            spids: [1498 1500]
          )
        }
      ]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [(C {(offline_cpu_expect_fail)} {($ VSub_Name "$cpu")})]
          spids: [1503 1510]
        )
      spids: [1497 1501]
    )
    (SimpleCommand
      words: [{(echo)} {(0)}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {($ VSub_Name "$NOTIFIER_ERR_INJECT_DIR") (/actions/CPU_DOWN_PREPARE/error)}
          spids: [1517]
        )
      ]
    )
    (C {(/sbin/modprobe)} {(-q)} {(-r)} {(cpu-notifier-error-inject)})
  ]
)