(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: <Redir_DLess '<<'>
                  fd: 16777215
                  here_begin: {(EOF)}
                  here_end_span_id: 48
                  stdin_parts: [
                    ('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')
                  ]
                )
                (Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})
              ]
            )
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [16777215 28]
        )
      ]
      spids: [16777215 54]
    )
    (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: F
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [59 84]
                )
              )
            }
          spids: [57]
        )
      ]
      spids: [57]
    )
    (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: F
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [89 101]
                )
              )
            }
          spids: [87]
        )
      ]
      spids: [87]
    )
    (Case
      to_match: 
        {
          (BracedVarSub
            token: <VSub_Name unit>
            suffix_op: (StringUnary op_id:VTest_ColonEquals arg_word:{(F)})
            spids: [107 111]
          )
        }
      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: [124]
                )
              ]
              spids: [124]
            )
            (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: F
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [132 144]
                        )
                      )
                    }
                  spids: [130]
                )
              ]
              spids: [130]
            )
            (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: F
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [150 162]
                        )
                      )
                    }
                  spids: [148]
                )
              ]
              spids: [148]
            )
          ]
          spids: [116 118 166 16777215]
        )
        (case_arm
          pat_list: [{(C)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cels)
                  op: Equal
                  rhs: {($ VSub_Name '$temp')}
                  spids: [178]
                )
              ]
              spids: [178]
            )
            (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: F
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [184 196]
                        )
                      )
                    }
                  spids: [182]
                )
              ]
              spids: [182]
            )
            (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: F
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [202 214]
                        )
                      )
                    }
                  spids: [200]
                )
              ]
              spids: [200]
            )
          ]
          spids: [170 172 218 16777215]
        )
        (case_arm
          pat_list: [{(K)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:kelv)
                  op: Equal
                  rhs: {($ VSub_Name '$temp')}
                  spids: [230]
                )
              ]
              spids: [230]
            )
            (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: F
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [236 248]
                        )
                      )
                    }
                  spids: [234]
                )
              ]
              spids: [234]
            )
            (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: F
                                )
                              ]
                            )
                          left_token: <Left_CommandSub '$('>
                          spids: [254 266]
                        )
                      )
                    }
                  spids: [252]
                )
              ]
              spids: [252]
            )
          ]
          spids: [222 224 270 16777215]
        )
        (case_arm
          pat_list: [{(Lit_Other '*')}]
          action: [
            (C {(echo)} {(DQ ('Given temperature unit is not supported'))})
            (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
          ]
          spids: [274 275 16777215 289]
        )
      ]
      spids: [105 113 289]
    )
    (C {(echo)} {(DQ ('Fahrenheit = ') ($ VSub_Name '$farn'))})
    (C {(echo)} {(DQ ('Celsius    = ') ($ VSub_Name '$cels'))})
    (C {(echo)} {(DQ ('Kelvin     = ') ($ VSub_Name '$kelv'))})
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})
  ]
)