(CommandList
  children: [
    (If
      arms: [
        (if_arm
          cond: [(Sentence child:(C {(test)} {(-t)} {(1)}) terminator:<Op_Semi ";">)]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:NUM_COLORS)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: (CommandList children:[(C {(tput)} {(colors)})])
                        left_token: <Left_CommandSub "$(">
                        spids: [24 28]
                      )
                    }
                  spids: [23]
                )
              ]
              spids: [23]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (AndOr
                          children: [
                            (C {(test)} {(-n)} {(DQ (${ VSub_Name NUM_COLORS))})
                            (C {(test)} {(${ VSub_Name NUM_COLORS)} {(-ge)} {(8)})
                          ]
                          op_id: Op_DAmp
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:NORMAL)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(sgr0)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [60 64]
                              )
                            }
                          spids: [59]
                        )
                      ]
                      spids: [59]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:BOLD)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(bold)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [68 72]
                              )
                            }
                          spids: [67]
                        )
                      ]
                      spids: [67]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:UNDERLINE)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(smul)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [76 80]
                              )
                            }
                          spids: [75]
                        )
                      ]
                      spids: [75]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:REVERSE)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(smso)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [84 88]
                              )
                            }
                          spids: [83]
                        )
                      ]
                      spids: [83]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:BLINK)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(blink)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [92 96]
                              )
                            }
                          spids: [91]
                        )
                      ]
                      spids: [91]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:BLACK)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(setaf)} {(0)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [100 106]
                              )
                            }
                          spids: [99]
                        )
                      ]
                      spids: [99]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:RED)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(setaf)} {(1)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [110 116]
                              )
                            }
                          spids: [109]
                        )
                      ]
                      spids: [109]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:GREEN)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(setaf)} {(2)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [120 126]
                              )
                            }
                          spids: [119]
                        )
                      ]
                      spids: [119]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:YELLOW)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(setaf)} {(3)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [130 136]
                              )
                            }
                          spids: [129]
                        )
                      ]
                      spids: [129]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:BLUE)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(setaf)} {(4)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [140 146]
                              )
                            }
                          spids: [139]
                        )
                      ]
                      spids: [139]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:MAGENTA)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(setaf)} {(5)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [150 156]
                              )
                            }
                          spids: [149]
                        )
                      ]
                      spids: [149]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:CYAN)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(setaf)} {(6)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [160 166]
                              )
                            }
                          spids: [159]
                        )
                      ]
                      spids: [159]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:WHITE)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: (CommandList children:[(C {(tput)} {(setaf)} {(7)})])
                                left_token: <Left_CommandSub "$(">
                                spids: [170 176]
                              )
                            }
                          spids: [169]
                        )
                      ]
                      spids: [169]
                    )
                  ]
                  spids: [-1 56]
                )
              ]
              spids: [-1 179]
            )
          ]
          spids: [-1 16]
        )
      ]
      spids: [-1 181]
    )
  ]
)