(command.CommandList
  children: [
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.DBracket
                      left: <Id.KW_DLeftBracket '[['>
                      expr: 
                        (bool_expr.Binary
                          op_id: Id.BoolBinary_EqualTilde
                          left: {(DQ ($ Id.VSub_DollarName BASH_VERSION))}
                          right: {<Id.Lit_Other '^'> <3>}
                        )
                      right: <Id.Lit_DRightBracket ']]'>
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(SQ <'quinedb requires bash 4!'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [4 20]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <declare>
      more_env: []
      words: [{<declare>} {<-A>} {<db>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'db='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'db='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'db='> name:db)
          op: assign_op.Equal
          rhs: {(ShArrayLiteral left:<Id.Op_LParen _> words:[] right:<Id.Right_ShArrayLiteral _>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'PREAMBLE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'PREAMBLE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PREAMBLE='> name:PREAMBLE)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <cat>
                    more_env: []
                    words: [{<cat>}]
                    redirects: [
                      (Redir
                        op: <Id.Redir_DLess '<<'>
                        loc: (redir_loc.Fd fd:0)
                        arg: 
                          (redir_param.HereDoc
                            here_begin: {(SQ <EOF>)}
                            here_end_tok: <Id.Undefined_Tok ''>
                            stdin_parts: [
                              <'#!/usr/bin/env bash\n'>
                              <'\n'>
                              <'if [[ "$BASH_VERSION" =~ ^3 ]]; then\n'>
                              <'    echo \'quinedb requires bash 4!\'\n'>
                              <'    exit 1\n'>
                              <'fi\n'>
                              <'\n'>
                              <'declare -A db\n'>
                            ]
                          )
                      )
                    ]
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'POSTAMBLE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'POSTAMBLE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'POSTAMBLE='> name:POSTAMBLE)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <cat>
                    more_env: []
                    words: [{<cat>}]
                    redirects: [
                      (Redir
                        op: <Id.Redir_DLess '<<'>
                        loc: (redir_loc.Fd fd:0)
                        arg: 
                          (redir_param.HereDoc
                            here_begin: {(SQ <EOF>)}
                            here_end_tok: <Id.Undefined_Tok ''>
                            stdin_parts: [
                              <'pr_str () {\n'>
                              <'    printf "%q" "$1"\n'>
                              <'}\n'>
                              <'\n'>
                              <'case "$1" in\n'>
                              <'    "get")\n'>
                              <'        if [ ${db["$2"]+_} ]; then\n'>
                              <'            v=${db["$2"]}\n'>
                              <'            echo "$(pr_str "$v")" >&2\n'>
                              <'        fi\n'>
                              <'    ;;\n'>
                              <'    "set")\n'>
                              <'        db["$2"]="$3"\n'>
                              <'        echo \'OK\' >&2\n'>
                              <'    ;;\n'>
                              <'    "delete")\n'>
                              <'        unset db["$2"]\n'>
                              <'        echo \'OK\' >&2\n'>
                              <'    ;;\n'>
                              <'    "keys")\n'>
                              <'        for k in "${!db[@]}"; do echo "$(pr_str "$k")"; done >&2\n'>
                              <'    ;;\n'>
                              <'    *)\n'>
                              <
'        echo "USAGE: quinedb [get k | set k v | delete k | keys]" >&2\n'
                              >
                              <'    ;;\n'>
                              <'esac\n'>
                              <'\n'>
                              <'# print self\n'>
                              <'\n'>
                              <'print_db(){\n'>
                              <'    echo "db=("\n'>
                              <'    i=0\n'>
                              <'    for k in "${!db[@]}"; do\n'>
                              <'        escaped_keys[$i]=$(pr_str "$k")\n'>
                              <'        i=$((i+1))\n'>
                              <'    done\n'>
                              <'\n'>
                              <'    # sort the keys for deterministic printing\n'>
                              <
'    IFS=$\'\\n\' sorted=($(for l in ${escaped_keys[@]}; do echo $l; done | sort))\n'
                              >
                              <'    unset IFS\n'>
                              <'\n'>
                              <'    for k in "${sorted[@]}"; do\n'>
                              <'        unescaped=$(eval "echo $k")\n'>
                              <'        v=${db["$unescaped"]}\n'>
                              <'        echo "    [$k]=$(pr_str "$v")"\n'>
                              <'    done\n'>
                              <'    echo ")"\n'>
                              <'}\n'>
                              <'\n'>
                              <'echo "$PREAMBLE"; echo\n'>
                              <'print_db; echo\n'>
                              <'echo \'PREAMBLE=$(cat <<\'\\\'EOF\\\'\n'>
                              <'echo "$PREAMBLE"\n'>
                              <'echo EOF\n'>
                              <'echo \\); echo\n'>
                              <'echo \'POSTAMBLE=$(cat <<\'\\\'EOF\\\'\n'>
                              <'echo "$POSTAMBLE"\n'>
                              <'echo EOF\n'>
                              <'echo \\); echo\n'>
                              <'echo "$POSTAMBLE"\n'>
                            ]
                          )
                      )
                    ]
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <pr_str>
      name: pr_str
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [{<printf>} {(DQ <'%q'>)} {(DQ ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.Left_DoubleQuote '"'>
          pattern: (pat.Words words:[{(DQ <get>)}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name db>
                                    var_name: db
                                    bracket_op: (bracket_op.ArrayIndex expr:{(DQ ($ Id.VSub_Number 2))})
                                    suffix_op: (suffix_op.Unary op:<Id.VTest_Plus _> arg_word:{<_>})
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                }
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'v='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'v='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'v='> name:v)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name db>
                                var_name: db
                                bracket_op: (bracket_op.ArrayIndex expr:{(DQ ($ Id.VSub_Number 2))})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <pr_str>
                                  more_env: []
                                  words: [{<pr_str>} {(DQ ($ Id.VSub_DollarName v))}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                  ]
                  spids: [180 198]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Left_DoubleQuote '"'>
          pattern: (pat.Words words:[{(DQ <set>)}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_ArrayLhsOpen 'db['>
              pairs: [
                (AssignPair
                  left: <Id.Lit_ArrayLhsOpen 'db['>
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      left: <Id.Lit_ArrayLhsOpen 'db['>
                      name: db
                      index: {(DQ ($ Id.VSub_Number 2))}
                    )
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 3))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(SQ <OK>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Left_DoubleQuote '"'>
          pattern: (pat.Words words:[{(DQ <delete>)}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [
                {<unset>}
                {<Id.Lit_ArrayLhsOpen 'db['> (DQ ($ Id.VSub_Number 2)) <Id.Lit_RBracket ']'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(SQ <OK>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Left_DoubleQuote '"'>
          pattern: (pat.Words words:[{(DQ <keys>)}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [k]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name db>
                          var_name: db
                          prefix_op: <Id.VSub_Bang '!'>
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <pr_str>
                                      more_env: []
                                      words: [{<pr_str>} {(DQ ($ Id.VSub_DollarName k))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Lit_Star '*'>
          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'USAGE: quinedb [get k | set k v | delete k | keys]'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.ShFunction
      name_tok: <print_db>
      name: print_db
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'db=('>)}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'i='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'i='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [k]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name db>
                          var_name: db
                          prefix_op: <Id.VSub_Bang '!'>
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_ArrayLhsOpen 'escaped_keys['>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_ArrayLhsOpen 'escaped_keys['>
                          lhs: 
                            (sh_lhs_expr.IndexedName
                              left: <Id.Lit_ArrayLhsOpen 'escaped_keys['>
                              name: escaped_keys
                              index: {($ Id.VSub_DollarName i)}
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <pr_str>
                                    more_env: []
                                    words: [{<pr_str>} {(DQ ($ Id.VSub_DollarName k))}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'i='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'i='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: ($ Id.Lit_ArithVarLike i)
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'IFS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'IFS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (SingleQuoted
                        left: <Id.Left_DollarSingleQuote '$\''>
                        tokens: [<Id.Char_OneChar '\\n'>]
                        right: <Id.Right_SingleQuote '\''>
                      )
                    }
                )
                (AssignPair
                  left: <Id.Lit_VarLike 'sorted='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sorted='> name:sorted)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (ShArrayLiteral
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.ForEach
                                      keyword: <Id.KW_For for>
                                      iter_names: [l]
                                      iterable: 
                                        (for_iter.Words
                                          words: [
                                            {
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name escaped_keys>
                                                var_name: escaped_keys
                                                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                                right: <Id.Right_DollarBrace '}'>
                                              )
                                            }
                                          ]
                                        )
                                      semi_tok: <Id.Op_Semi _>
                                      body: 
                                        (command.DoGroup
                                          left: <Id.KW_Do do>
                                          children: [
                                            (command.Sentence
                                              child: 
                                                (command.Simple
                                                  blame_tok: <echo>
                                                  more_env: []
                                                  words: [{<echo>} {($ Id.VSub_DollarName l)}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              terminator: <Id.Op_Semi _>
                                            )
                                          ]
                                          right: <Id.KW_Done done>
                                        )
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <sort>
                                      more_env: []
                                      words: [{<sort>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _>]
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        ]
                        right: <Id.Right_ShArrayLiteral _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <unset>
              more_env: []
              words: [{<unset>} {<IFS>}]
              redirects: []
              do_fork: T
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [k]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (DQ 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name sorted>
                          var_name: sorted
                          bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                  ]
                )
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'unescaped='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'unescaped='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'unescaped='> name:unescaped)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <eval>
                                    more_env: []
                                    words: [{<eval>} {(DQ <'echo '> ($ Id.VSub_DollarName k))}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'v='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'v='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'v='> name:v)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name db>
                                var_name: db
                                bracket_op: 
                                  (bracket_op.ArrayIndex
                                    expr: {(DQ ($ Id.VSub_DollarName unescaped))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ <'    ['> ($ Id.VSub_DollarName k) <']='> 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <pr_str>
                                  more_env: []
                                  words: [{<pr_str>} {(DQ ($ Id.VSub_DollarName v))}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <')'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName PREAMBLE))}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <print_db>
              more_env: []
              words: [{<print_db>}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
      ]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [
        {<echo>}
        {(SQ <'PREAMBLE=$(cat <<'>) 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') <EOF> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'')
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ ($ Id.VSub_DollarName PREAMBLE))}]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>} {<EOF>}] redirects:[] do_fork:T)
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'> ch:')')}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
      ]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [
        {<echo>}
        {(SQ <'POSTAMBLE=$(cat <<'>) 
          (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'') <EOF> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\''> ch:'\'')
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ ($ Id.VSub_DollarName POSTAMBLE))}]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>} {<EOF>}] redirects:[] do_fork:T)
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\)'> ch:')')}]
              redirects: []
              do_fork: T
            )
          terminator: <Id.Op_Semi _>
        )
        (command.Simple blame_tok:<echo> more_env:[] words:[{<echo>}] redirects:[] do_fork:T)
      ]
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ ($ Id.VSub_DollarName POSTAMBLE))}]
      redirects: []
      do_fork: T
    )
  ]
)