(CommandList
  children: [
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(0)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: -1
                  body: 
                    {
                      (DQ ('Usage: ') ($ VSub_Number '$0') (' temperature[F|C|K]\n') 
                        ('where the suffix:\n') ('   F    indicates input is in Fahrenheit (default)\n') ('   C    indicates input is in Celsius\n') 
                        ('   K    indicates input is in Kelvin\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [33]
                )
                (Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[37])
              ]
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 28]
        )
      ]
      spids: [-1 53]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:unit)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (Pipeline
                          children: [
                            (C {(echo)} {($ VSub_Number '$1')})
                            (C {(sed)} {(-e)} {(SQ <'s/[-[:digit:]]*//g'>)})
                            (C {(tr)} {(SQ <'[:lower:]'>)} {(SQ <'[:upper:]'>)})
                          ]
                          negated: False
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [58 83]
                )
              )
            }
          spids: [56]
        )
      ]
      spids: [56]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:temp)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: 
                    (CommandList
                      children: [
                        (Pipeline
                          children: [
                            (C {(echo)} {($ VSub_Number '$1')})
                            (C {(sed)} {(-e)} {(SQ <'s/[^-[:digit:]]*//g'>)})
                          ]
                          negated: False
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [88 100]
                )
              )
            }
          spids: [86]
        )
      ]
      spids: [86]
    )
    (Case
      to_match: 
        {
          (BracedVarSub
            token: <VSub_Name unit>
            suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(F)})
            spids: [106 110]
          )
        }
      arms: [
        (case_arm
          pat_list: [{(F)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:farn)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$temp'))}
                  spids: [123]
                )
              ]
              spids: [123]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cels)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(echo)} 
                                      {(DQ ('scale=2;(') ($ VSub_Name '$farn') (' - 32) / 1.8'))}
                                    )
                                    (C {(bc)})
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [131 143]
                        )
                      )
                    }
                  spids: [129]
                )
              ]
              spids: [129]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:kelv)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(echo)} {(DQ ('scale=2;') ($ VSub_Name '$cels') (' + 273.15'))})
                                    (C {(bc)})
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [149 161]
                        )
                      )
                    }
                  spids: [147]
                )
              ]
              spids: [147]
            )
          ]
          spids: [115 117 165 -1]
        )
        (case_arm
          pat_list: [{(C)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cels)
                  op: Equal
                  rhs: {($ VSub_Name '$temp')}
                  spids: [177]
                )
              ]
              spids: [177]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:kelv)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(echo)} {(DQ ('scale=2;') ($ VSub_Name '$cels') (' + 273.15'))})
                                    (C {(bc)})
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [183 195]
                        )
                      )
                    }
                  spids: [181]
                )
              ]
              spids: [181]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:farn)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(echo)} 
                                      {(DQ ('scale=2;(1.8 * ') ($ VSub_Name '$cels') (') + 32'))}
                                    )
                                    (C {(bc)})
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [201 213]
                        )
                      )
                    }
                  spids: [199]
                )
              ]
              spids: [199]
            )
          ]
          spids: [169 171 217 -1]
        )
        (case_arm
          pat_list: [{(K)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:kelv)
                  op: Equal
                  rhs: {($ VSub_Name '$temp')}
                  spids: [229]
                )
              ]
              spids: [229]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cels)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(echo)} {(DQ ('scale=2; ') ($ VSub_Name '$kelv') (' - 273.15'))})
                                    (C {(bc)})
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [235 247]
                        )
                      )
                    }
                  spids: [233]
                )
              ]
              spids: [233]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:farn)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (Pipeline
                                  children: [
                                    (C {(echo)} 
                                      {(DQ ('scale=2; (1.8 * ') ($ VSub_Name '$cels') (') + 32'))}
                                    )
                                    (C {(bc)})
                                  ]
                                  negated: False
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [253 265]
                        )
                      )
                    }
                  spids: [251]
                )
              ]
              spids: [251]
            )
          ]
          spids: [221 223 269 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [(C {(echo)} {(DQ ('Given temperature unit is not supported'))}) (C {(exit)} {(1)})]
          spids: [273 274 -1 288]
        )
      ]
      spids: [104 112 288]
    )
    (C {(echo)} {(DQ ('Fahrenheit = ') ($ VSub_Name '$farn'))})
    (C {(echo)} {(DQ ('Celsius    = ') ($ VSub_Name '$cels'))})
    (C {(echo)} {(DQ ('Kelvin     = ') ($ VSub_Name '$kelv'))})
    (C {(exit)} {(0)})
  ]
)