(CommandList
  children: [
    (FuncDef
      name: print_version_string
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (SimpleCommand
                      words: [{(grep)} {(GIT)} {(DQ ($ VSub_Number '$1'))}]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[20])]
                    )
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(read)} {(ver)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Less
                          fd: -1
                          arg_word: {(DQ ($ VSub_Number '$1'))}
                          spids: [31]
                        )
                      ]
                    )
                    (Pipeline
                      children: [(C {(echo)} {($ VSub_Name '$ver')}) (C {(tr)} {(-d)} {(SQ <'\\012'>)})]
                      negated: False
                    )
                    (C {(date)} 
                      {(Lit_Other '+') (_) (Lit_Other '%') (Y_) (Lit_Other '%') (m_) (Lit_Other '%') (d)}
                    )
                  ]
                  spids: [-1 24]
                )
              ]
              else_action: [(C {(cat)} {(DQ ($ VSub_Number '$1'))})]
              spids: [64 74]
            )
          ]
          spids: [7]
        )
      spids: [3 6]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test)} {($ VSub_Pound '$#')} {(KW_Bang '!') (Lit_Other '=')} {(3)})]
          action: [
            (SimpleCommand
              words: [
                {(echo)}
                {(DQ ('Usage: gen_version_header.sh <version file> <template> <output file>'))}
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[98])]
            )
            (C {(exit)} {(1)})
          ]
          spids: [-1 89]
        )
      ]
      spids: [-1 106]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:version_string)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(print_version_string)} {(DQ ($ VSub_Number '$1'))})]
                  )
                left_token: <Left_Backtick '`'>
                spids: [109 115]
              )
            }
          spids: [108]
        )
      ]
      spids: [108]
    )
    (SimpleCommand
      words: [
        {(sed)}
        {(DQ ('s/%%LIBPCAP_VERSION%%/') ($ VSub_Name '$version_string') (/))}
        {(DQ ($ VSub_Number '$2'))}
      ]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(DQ ($ VSub_Number '$3'))} spids:[129])]
    )
  ]
)