(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'SHQL_ROOT='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'SHQL_ROOT='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHQL_ROOT='> name:SHQL_ROOT)
          op: assign_op.Equal
          rhs: {(DQ <'/u/shql'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'EDITOR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'EDITOR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'EDITOR='> name:EDITOR)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name EDITOR>
                  var_name: EDITOR
                  suffix_op: 
                    (suffix_op.Unary
                      op: <Id.VTest_ColonEquals _>
                      arg_word: 
                        {<Id.Lit_Slash '/'> <usr> <Id.Lit_Slash '/'> <bin> <Id.Lit_Slash '/'> <vi>}
                    )
                  right: <Id.Right_DollarBrace '}'>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'SHELL='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'SHELL='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHELL='> name:SHELL)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name SHELL>
                  var_name: SHELL
                  suffix_op: 
                    (suffix_op.Unary
                      op: <Id.VTest_ColonEquals _>
                      arg_word: {<Id.Lit_Slash '/'> <bin> <Id.Lit_Slash '/'> <sh>}
                    )
                  right: <Id.Right_DollarBrace '}'>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'AWK='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'AWK='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AWK='> name:AWK)
          op: assign_op.Equal
          rhs: {<mawk>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'DEBUG='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'DEBUG='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DEBUG='> name:DEBUG)
          op: assign_op.Equal
          rhs: {(DQ <N>)}
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <Id.Lit_LBracket '['>
          more_env: []
          words: [
            {<Id.Lit_LBracket '['>}
            {(DQ ($ Id.VSub_DollarName DEBUG))}
            {<Id.Lit_Equals '='>}
            {(DQ <Y>)}
            {<Id.Lit_RBracket ']'>}
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <set>
          more_env: []
          words: [{<set>} {<-x>}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'UMASK='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'UMASK='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UMASK='> name:UMASK)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <umask>
                    more_env: []
                    words: [{<umask>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <umask>
      more_env: []
      words: [{<umask>} {<0000>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [
        {<trap>}
        {
          (DQ <'echo '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <Goodbye> 
            (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' ; '> <'    rm -f /tmp/'> ($ Id.VSub_Dollar '$') <' /tmp/'> ($ Id.VSub_Dollar '$') <'row /tmp/'> 
            ($ Id.VSub_Dollar '$') <'join*'>
          )
        }
        {<0>}
        {<1>}
        {<2>}
        {<3>}
        {<15>}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple blame_tok:<set> more_env:[] words:[{<set>} {<-h>}] redirects:[] do_fork:T)
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(SQ <'\\c'>)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [{<grep>} {<-s>} {<c>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'NOCR1='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'NOCR1='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOCR1='> name:NOCR1)
                  op: assign_op.Equal
                  rhs: {(SQ <-n>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'NOCR2='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'NOCR2='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOCR2='> name:NOCR2)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
          ]
          spids: [152 170]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'NOCR1='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'NOCR1='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOCR1='> name:NOCR1)
              op: assign_op.Equal
              rhs: {(DQ )}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'NOCR2='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'NOCR2='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NOCR2='> name:NOCR2)
              op: assign_op.Equal
              rhs: {(SQ <'\\c'>)}
            )
          ]
          redirects: []
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'NL='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'NL='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NL='> name:NL)
          op: assign_op.Equal
          rhs: {(SQ <'\n'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'TAB='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'TAB='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TAB='> name:TAB)
          op: assign_op.Equal
          rhs: {(SQ <'\t'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <export>
      more_env: []
      words: [{<export>} {<_IFS>} {<TABLE>} {<CMD>} {<NOCR1>} {<NOCR2>} {<NL>} {<TAB>}]
      redirects: []
      do_fork: T
    )
    (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: {(DQ ($ Id.VSub_DollarName IFS))}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ <X> ($ Id.VSub_Number 1))}
                    {<Id.Lit_Equals '='>}
                    {(DQ <X-q>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'QUIET='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'QUIET='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'QUIET='> name:QUIET)
                  op: assign_op.Equal
                  rhs: {(DQ <Y>)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [239 257]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ <X> ($ Id.VSub_Number 1))}
                    {<Id.Lit_Equals '='>}
                    {(DQ <X>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Missing database name.'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {
                  (DQ <'The database name must be a directory under '> ($ Id.VSub_DollarName HOME) 
                    <'/shql'>
                  )
                }
              ]
              redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'\tor a directory under '> ($ Id.VSub_DollarName SHQL_ROOT))}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [270 287]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Database: '> ($ Id.VSub_Number 1))}]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<-d>}
                    {($ Id.VSub_DollarName HOME) <'/shql/'> ($ Id.VSub_Number 1)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <cd>
              more_env: []
              words: [{<cd>} {($ Id.VSub_DollarName HOME) <'/shql/'> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [336 348]
        )
        (IfArm
          keyword: <Id.KW_Elif elif>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<-d>}
                    {($ Id.VSub_DollarName SHQL_ROOT) <'/'> ($ Id.VSub_Number 1)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <cd>
              more_env: []
              words: [{<cd>} {($ Id.VSub_DollarName SHQL_ROOT) <'/'> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [356 368]
        )
        (IfArm
          keyword: <Id.KW_Elif elif>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<-d>}
                    {($ Id.VSub_DollarName HOME) <'/'> ($ Id.VSub_Number 1)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <cd>
              more_env: []
              words: [{<cd>} {($ Id.VSub_DollarName HOME) <'/'> ($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [376 388]
        )
        (IfArm
          keyword: <Id.KW_Elif elif>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [{<Id.Lit_LBracket '['>} {<-d>} {($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <cd>
              more_env: []
              words: [{<cd>} {($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [396 406]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(DQ <'Unknown database ('> ($ Id.VSub_Number 1) <')'>)}]
          redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [
            {<echo>}
            {
              (DQ <'The database name must be a directory under '> ($ Id.VSub_DollarName HOME) 
                <'/shql'>
              )
            }
          ]
          redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(DQ <'\tor a directory under '> ($ Id.VSub_DollarName SHQL_ROOT))}]
          redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
        (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShFunction
      name_tok: <syntax>
      name: syntax
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (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: <create>
                  pattern: (pat.Words words:[{<create>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (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: {(DQ <END>)}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <'CREATE TABLE table_name (\n'>
                                <'\tcolumn_name column_width \n'>
                                <'\t{, ...} \n'>
                                <') \t\n'>
                                <'or\n'>
                                <'CREATE VIEW view_name (\n'>
                                <'\ttable_or_view1.column1 = table_or_view2.column2\n'>
                                <')\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <delete>
                  pattern: (pat.Words words:[{<delete>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (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: {(DQ <END>)}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <'DELETE \n'>
                                <'FROM table_name\t\n'>
                                <'{ WHERE where_clause }\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <drop>
                  pattern: (pat.Words words:[{<drop>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (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: {(DQ <END>)}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <'DROP TABLE table_name\n'>
                                <'or\n'>
                                <'DROP VIEW view_name\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <edit>
                  pattern: (pat.Words words:[{<edit>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (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: {(DQ <END>)}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <'EDIT table_name\n'>
                                <
'is a non-standard method of changing a table\'s field names or display widths.\n'
                                >
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <help>
                  pattern: (pat.Words words:[{<help>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (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: {(DQ <END>)}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <'HELP ALL\n'>
                                <'or\n'>
                                <'HELP TABLES \n'>
                                <'or\n'>
                                <'HELP VIEWS\n'>
                                <'or\n'>
                                <'HELP COMMANDS\n'>
                                <'or\n'>
                                <
'HELP [CREATE | DELETE | DROP | INSERT | SELECT | UPDATE | WHERE | PRINT | EDIT]\n'
                                >
                                <'or\n'>
                                <'HELP table_name\n'>
                                <'Commands must appear in lower case.\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <insert>
                  pattern: (pat.Words words:[{<insert>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (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: {(DQ <END>)}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <'INSERT INTO table_name \n'>
                                <'\t{ ( column_name, ... ) }\n'>
                                <'VALUES ( expression, ...)\n'>
                                <'or\t\t\n'>
                                <'INSERT INTO table_name \n'>
                                <'\t{ ( column_name, ... ) }\n'>
                                <'subselect\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <print>
                  pattern: (pat.Words words:[{<print>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (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: {(DQ <END>)}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <'PRINT table_name \n'>
                                <'is a non-standard synonym for SELECT * FROM table_name.\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <select>
                  pattern: (pat.Words words:[{<select>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (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: {(DQ <END>)}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <'SELECT { DISTINCT } \n'>
                                <'\t[ column_name {,...} | * ]\n'>
                                <'FROM [ table_name | view_name ]\n'>
                                <'{ WHERE where_clause }\n'>
                                <'{ ORDER BY column_name { NUM } { ASC | DESC } {, ... }\n'>
                                <'{ UNION select statement }\n'>
                                <'\'NUM\' is a non-standard method for sorting numeric fields.\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <update>
                  pattern: (pat.Words words:[{<update>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (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: {(DQ <END>)}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <'UPDATE table_name\n'>
                                <'SET column_name = expression {, ... }\n'>
                                <'{ WHERE where_clause }\n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <where>
                  pattern: (pat.Words words:[{<where>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (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: {(DQ <END>)}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <
'WHERE [ column_name | value ] [ =, !=, >, <, >=, <=, and, or, not, in ]\n'
                                >
                                <'      [ column_name | value | subselect ]\n'>
                                <'Parentheses may be used to group expressions.  \n'>
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <syntax>
                  pattern: (pat.Words words:[{<syntax>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<commands>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<create>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<delete>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<drop>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<insert>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<select>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<update>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<where>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<print>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<edit>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <lookup_field>
      name: lookup_field
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {<Id.KW_Bang '!'>}
                            {<-f>}
                            {($ Id.VSub_DollarName TABLE) <Id.Lit_Other '%'>}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'RESULT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'RESULT='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RESULT='> name:RESULT)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Simple
                                      blame_tok: <grep>
                                      more_env: []
                                      words: [
                                        {<grep>}
                                        {<-n>}
                                        {(DQ <'^'> ($ Id.VSub_Number 1) <'\t'>)}
                                        {($ Id.VSub_DollarName TABLE) <Id.Lit_At '@'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [833 847]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'RESULT='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'RESULT='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RESULT='> name:RESULT)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <grep>
                                      more_env: []
                                      words: [
                                        {<grep>}
                                        {<-n>}
                                        {(DQ <'^'> ($ Id.VSub_Number 1) <'\t'>)}
                                        {($ Id.VSub_DollarName TABLE) <Id.Lit_At '@'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <sed>
                                      more_env: []
                                      words: [{<sed>} {<1q>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _>]
                                )
                              right: <Id.Backtick_Right '`'>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {<Id.KW_Bang '!'>}
                            {(DQ ($ Id.VSub_DollarName RESULT))}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'OUTFIELD='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'OUTFIELD='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OUTFIELD='> name:OUTFIELD)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number 1))}
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [910 924]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'OUTFIELDNUM='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'OUTFIELDNUM='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OUTFIELDNUM='> name:OUTFIELDNUM)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Simple
                                  blame_tok: <expr>
                                  more_env: []
                                  words: [
                                    {<expr>}
                                    {(DQ ($ Id.VSub_DollarName RESULT))}
                                    {<Id.Lit_Colon ':'>}
                                    {(SQ <'\\([^:]*\\)'>)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Backtick_Right '`'>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'OUTFIELD='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'OUTFIELD='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OUTFIELD='> name:OUTFIELD)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                            ($ Id.VSub_DollarName OUTFIELDNUM)
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <do_aggreg>
      name: do_aggreg
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(SQ <Xsum>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'AGGREG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'AGGREG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AGGREG='> name:AGGREG)
                          op: assign_op.Equal
                          rhs: {(SQ <total>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [999 1017]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(SQ <Xavg>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'AGGREG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'AGGREG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AGGREG='> name:AGGREG)
                          op: assign_op.Equal
                          rhs: {(SQ <'(total/cnt)'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1025 1043]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(SQ <Xcount>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'AGGREG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'AGGREG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AGGREG='> name:AGGREG)
                          op: assign_op.Equal
                          rhs: {(SQ <cnt>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1051 1069]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(SQ <Xmin>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'AGGREG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'AGGREG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AGGREG='> name:AGGREG)
                          op: assign_op.Equal
                          rhs: {(SQ <min>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1077 1095]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(SQ <Xmax>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'AGGREG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'AGGREG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AGGREG='> name:AGGREG)
                          op: assign_op.Equal
                          rhs: {(SQ <max>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1103 1121]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [(command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ <X> ($ Id.VSub_Number 2))}
                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                    {(DQ <'X('>)}
                    {<-o>}
                    {(DQ <X> ($ Id.VSub_Number 4))}
                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                    {(DQ <'X)'>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Bad aggregate syntax'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <syntax>
                  more_env: []
                  words: [{<syntax>} {<select>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'AGGFIELD='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'AGGFIELD='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'AGGFIELD='> name:AGGFIELD)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 3))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>} {<4>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <lookup_field>
              more_env: []
              words: [{<lookup_field>} {(DQ ($ Id.VSub_DollarName AGGFIELD))}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ ($ Id.VSub_QMark '?'))}
                    {<-ne>}
                    {<0>}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Bad field name ('> ($ Id.VSub_Number 1) <')'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_Pound '#')}
                        {<-ne>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ <X> ($ Id.VSub_Number 1))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <Xwhere>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ <X> ($ Id.VSub_Number 1))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <Xorder>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ <X> ($ Id.VSub_Number 1))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <Xunion>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'OUTFIELD='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'OUTFIELD='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OUTFIELD='> name:OUTFIELD)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Subshell
                                left: <Id.Op_LParen _>
                                child: 
                                  (command.CommandList
                                    children: [
                                      (command.Sentence
                                        child: 
                                          (command.ShAssignment
                                            left: <Id.Lit_VarLike 'SUBSELECT='>
                                            pairs: [
                                              (AssignPair
                                                left: <Id.Lit_VarLike 'SUBSELECT='>
                                                lhs: 
                                                  (sh_lhs_expr.Name
                                                    left: <Id.Lit_VarLike 'SUBSELECT='>
                                                    name: SUBSELECT
                                                  )
                                                op: assign_op.Equal
                                                rhs: {(DQ <Y>)}
                                              )
                                            ]
                                            redirects: []
                                          )
                                        terminator: <Id.Op_Semi _>
                                      )
                                      (command.Sentence
                                        child: 
                                          (command.ShAssignment
                                            left: <Id.Lit_VarLike 'AGGREGATE='>
                                            pairs: [
                                              (AssignPair
                                                left: <Id.Lit_VarLike 'AGGREGATE='>
                                                lhs: 
                                                  (sh_lhs_expr.Name
                                                    left: <Id.Lit_VarLike 'AGGREGATE='>
                                                    name: AGGREGATE
                                                  )
                                                op: assign_op.Equal
                                                rhs: {(DQ <Y>)}
                                              )
                                            ]
                                            redirects: []
                                          )
                                        terminator: <Id.Op_Semi _>
                                      )
                                      (command.Simple
                                        blame_tok: <select_>
                                        more_env: []
                                        words: [
                                          {<select_>}
                                          {(DQ <select>)}
                                          {(DQ ($ Id.VSub_DollarName AGGFIELD))}
                                          {(DQ <from>)}
                                          {(DQ ($ Id.VSub_DollarName TABLE))}
                                          {(DQ ($ Id.VSub_At '@'))}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                  )
                                right: <Id.Right_Subshell _>
                                redirects: []
                              )
                              (command.Simple
                                blame_tok: <Id.VSub_DollarName '$AWK'>
                                more_env: []
                                words: [
                                  {($ Id.VSub_DollarName AWK)}
                                  {<-F> (DQ <'\t'>)}
                                  {
                                    (SQ <'NR == 1 { min = $1; max = $1 }\n'> 
                                      <'\t\t\t { cnt += 1; total += $1 }\n'> <'\t\t$1 < min { min = $1 }\n'> <'\t\t$1 > max { max = $1 }\n'> 
                                      <'\t\tEND\t { printf "%s%s%s", "\\"", '>
                                    ) ($ Id.VSub_DollarName AGGREG) (SQ <', "\\"" }'>)
                                  }
                                ]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <expr>
                                    more_env: []
                                    words: [
                                      {<expr>}
                                      {(DQ ($ Id.VSub_DollarName RESULT))}
                                      {<Id.Lit_Colon ':'>}
                                      {(SQ <'[^\t]*\t\\(.*\\)'>)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                            {<-lt>}
                            {<10>}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'RESULT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'RESULT='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RESULT='> name:RESULT)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName AGGFIELD) <'\t10'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1420 1451]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <do_join>
      name: do_join
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <update_view>
              more_env: []
              words: [{<update_view>} {(DQ ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'TABLE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'TABLE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE='> name:TABLE)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <lookup_field>
              more_env: []
              words: [{<lookup_field>} {(DQ ($ Id.VSub_Number 2))}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ ($ Id.VSub_QMark '?'))}
                    {<-ne>}
                    {<0>}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {
                      (DQ <'Bad view specifcation ('> ($ Id.VSub_Number 1) <.> ($ Id.VSub_Number 2) <')'>)
                    }
                  ]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'JFIELD1='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'JFIELD1='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JFIELD1='> name:JFIELD1)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName OUTFIELDNUM))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'JFIELD1L1='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'JFIELD1L1='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JFIELD1L1='> name:JFIELD1L1)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Simple
                              blame_tok: <expr>
                              more_env: []
                              words: [{<expr>} {($ Id.VSub_DollarName JFIELD1)} {<->} {<1>}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <update_view>
              more_env: []
              words: [{<update_view>} {(DQ ($ Id.VSub_Number 3))}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'TABLE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'TABLE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE='> name:TABLE)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 3))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <lookup_field>
              more_env: []
              words: [{<lookup_field>} {(DQ ($ Id.VSub_Number 4))}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ ($ Id.VSub_QMark '?'))}
                    {<-ne>}
                    {<0>}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {
                      (DQ <'Bad view specifcation ('> ($ Id.VSub_Number 3) <.> ($ Id.VSub_Number 4) <')'>)
                    }
                  ]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'JFIELD2='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'JFIELD2='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JFIELD2='> name:JFIELD2)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName OUTFIELDNUM))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'JFIELD2L1='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'JFIELD2L1='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'JFIELD2L1='> name:JFIELD2L1)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Simple
                              blame_tok: <expr>
                              more_env: []
                              words: [{<expr>} {($ Id.VSub_DollarName JFIELD2)} {<->} {<1>}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.CommandList
                  children: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [
                            {<grep>}
                            {(DQ <'^'> ($ Id.VSub_Number 2) <'\t'>)}
                            {($ Id.VSub_Number 1) <Id.Lit_At '@'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <grep>
                          more_env: []
                          words: [
                            {<grep>}
                            {<-v>}
                            {(DQ <'^'> ($ Id.VSub_Number 2) <'\t'>)}
                            {($ Id.VSub_Number 1) <Id.Lit_At '@'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <grep>
                      more_env: []
                      words: [
                        {<grep>}
                        {<-v>}
                        {(DQ <'^'> ($ Id.VSub_Number 4) <'\t'>)}
                        {($ Id.VSub_Number 3) <Id.Lit_At '@'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              right: <Id.Right_Subshell _>
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_Number 5) <Id.Lit_At '@'>}
                )
              ]
            )
            (command.Simple
              blame_tok: <sort>
              more_env: []
              words: [
                {<sort>}
                {<-t> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\t'> ch:'\t')}
                {<Id.Lit_Other '+'> ($ Id.VSub_DollarName JFIELD2L1)}
                {($ Id.VSub_Number 3) <Id.Lit_TildeLike '~'>}
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                )
              ]
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <sort>
                  more_env: []
                  words: [
                    {<sort>}
                    {<-t> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\t'> ch:'\t')}
                    {<Id.Lit_Other '+'> ($ Id.VSub_DollarName JFIELD1L1)}
                    {($ Id.VSub_Number 1) <Id.Lit_TildeLike '~'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <join>
                  more_env: []
                  words: [
                    {<join>}
                    {<-t> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\t'> ch:'\t')}
                    {<-j1>}
                    {($ Id.VSub_DollarName JFIELD1)}
                    {<-j2>}
                    {($ Id.VSub_DollarName JFIELD2)}
                    {<->}
                    {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_Number 5) <Id.Lit_TildeLike '~'>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <update_view>
      name: update_view
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<Id.KW_Bang '!'>}
                    {<-f>}
                    {(DQ ($ Id.VSub_Number 1) <'%'>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.Simple
                  blame_tok: <do_join>
                  more_env: []
                  words: [
                    {<do_join>}
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <cat>
                            more_env: []
                            words: [{<cat>} {($ Id.VSub_Number 1) <Id.Lit_Other '%'>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              right: <Id.Right_Subshell _>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <where>
      name: where
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_Pound '#')}
                        {<-gt>}
                        {<0>}
                        {<-a>}
                        {(DQ ($ Id.VSub_Number 1))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {(DQ <order>)}
                        {<-a>}
                        {(DQ ($ Id.VSub_Number 1))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {(DQ <union>)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ <X> ($ Id.VSub_Number 1))}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <Xselect>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <set>
                              more_env: []
                              words: [
                                {<set>}
                                {<X>}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Subshell
                                        left: <Id.Op_LParen _>
                                        child: 
                                          (command.CommandList
                                            children: [
                                              (command.Sentence
                                                child: 
                                                  (command.ShAssignment
                                                    left: <Id.Lit_VarLike 'SUBSELECT='>
                                                    pairs: [
                                                      (AssignPair
                                                        left: <Id.Lit_VarLike 'SUBSELECT='>
                                                        lhs: 
                                                          (sh_lhs_expr.Name
                                                            left: <Id.Lit_VarLike 'SUBSELECT='>
                                                            name: SUBSELECT
                                                          )
                                                        op: assign_op.Equal
                                                        rhs: {(DQ <Y>)}
                                                      )
                                                    ]
                                                    redirects: []
                                                  )
                                                terminator: <Id.Op_Semi _>
                                              )
                                              (command.Simple
                                                blame_tok: <select_>
                                                more_env: []
                                                words: [{<select_>} {(DQ ($ Id.VSub_At '@'))}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            ]
                                          )
                                        right: <Id.Right_Subshell _>
                                        redirects: []
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ ($ Id.VSub_QMark '?'))}
                                            {<-eq>}
                                            {<0>}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <shift>
                                      more_env: []
                                      words: [{<shift>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [1920 1935]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [1875 1893]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (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: <and>
                          pattern: (pat.Words words:[{<and>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'WHERE='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'WHERE='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHERE='> name:WHERE)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName WHERE) <' && '>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <or>
                          pattern: (pat.Words words:[{<or>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'WHERE='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'WHERE='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHERE='> name:WHERE)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName WHERE) <' || '>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <not>
                          pattern: (pat.Words words:[{<not>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'WHERE='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'WHERE='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHERE='> name:WHERE)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName WHERE) <' !'>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Equals '='>
                          pattern: (pat.Words words:[{<Id.Lit_Equals '='>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'WHERE='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'WHERE='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHERE='> name:WHERE)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName WHERE) <' == '>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Left_SingleQuote '\''>
                          pattern: (pat.Words words:[{(SQ <in>)}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <set>
                              more_env: []
                              words: [
                                {<set>}
                                {<X>}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Subshell
                                        left: <Id.Op_LParen _>
                                        child: 
                                          (command.CommandList
                                            children: [
                                              (command.Sentence
                                                child: 
                                                  (command.ShAssignment
                                                    left: <Id.Lit_VarLike 'SUBSELECT='>
                                                    pairs: [
                                                      (AssignPair
                                                        left: <Id.Lit_VarLike 'SUBSELECT='>
                                                        lhs: 
                                                          (sh_lhs_expr.Name
                                                            left: <Id.Lit_VarLike 'SUBSELECT='>
                                                            name: SUBSELECT
                                                          )
                                                        op: assign_op.Equal
                                                        rhs: {(SQ <Y>)}
                                                      )
                                                    ]
                                                    redirects: []
                                                  )
                                                terminator: <Id.Op_Semi _>
                                              )
                                              (command.Simple
                                                blame_tok: <select_>
                                                more_env: []
                                                words: [{<select_>} {(DQ ($ Id.VSub_At '@'))}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            ]
                                          )
                                        right: <Id.Right_Subshell _>
                                        redirects: []
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ ($ Id.VSub_QMark '?'))}
                                            {<-eq>}
                                            {<0>}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <shift>
                                      more_env: []
                                      words: [{<shift>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [2039 2054]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                  arg_word: {<1>}
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'INWHERE='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'INWHERE='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'INWHERE='>
                                      name: INWHERE
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'COMP='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'COMP='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMP='> name:COMP)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'=='>)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'LOGIC='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'LOGIC='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LOGIC='> name:LOGIC)
                                  op: assign_op.Equal
                                  rhs: {(DQ <'||'>)}
                                )
                              ]
                              redirects: []
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ <X> ($ Id.VSub_DollarName LAST))}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <Xnot>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'COMP='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'COMP='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMP='> name:COMP)
                                      op: assign_op.Equal
                                      rhs: {(DQ <'='>)}
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'LOGIC='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'LOGIC='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'LOGIC='>
                                          name: LOGIC
                                        )
                                      op: assign_op.Equal
                                      rhs: {(DQ <'&&'>)}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                            )
                            (command.ForEach
                              keyword: <Id.KW_For for>
                              iter_names: [VALUE]
                              iterable: (for_iter__Args)
                              body: 
                                (command.DoGroup
                                  left: <Id.KW_Do do>
                                  children: [
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ <X> ($ Id.VSub_DollarName INWHERE))}
                                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                            {(DQ <X>)}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'INWHERE='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'INWHERE='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'INWHERE='>
                                                  name: INWHERE
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName INWHERE) <' '> 
                                                    ($ Id.VSub_DollarName LOGIC)
                                                  )
                                                }
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'INWHERE='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'INWHERE='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'INWHERE='>
                                              name: INWHERE
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName INWHERE) <' ('> 
                                                ($ Id.VSub_DollarName WHERE) ($ Id.VSub_DollarName COMP) <' '> ($ Id.VSub_DollarName VALUE) <') '>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.KW_Done done>
                                )
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'WHERE='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'WHERE='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHERE='> name:WHERE)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName INWHERE))}
                                )
                              ]
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          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: <lookup_field>
                              more_env: []
                              words: [{<lookup_field>} {(DQ ($ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'WHERE='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'WHERE='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHERE='> name:WHERE)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName WHERE) <' '> 
                                        ($ Id.VSub_DollarName OUTFIELD)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'LAST='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'LAST='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LAST='> name:LAST)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number 1))}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ ($ Id.VSub_DollarName WHERE))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'WHERE='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'WHERE='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHERE='> name:WHERE)
                      op: assign_op.Equal
                      rhs: {(DQ <' ( '> ($ Id.VSub_DollarName WHERE) <' ) '>)}
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Missing \'where\' clause'>)}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.Simple
              blame_tok: <syntax>
              more_env: []
              words: [{<syntax>} {<where>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <help>
      name: help
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {<Id.KW_Bang '!'>}
                            {(DQ ($ Id.VSub_Number 2))}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'Ambiguous syntax, try:'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <syntax>
                      more_env: []
                      words: [{<syntax>} {<help>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [2276 2289]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ ($ Id.VSub_Number 2))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <all>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <ls>
                          more_env: []
                          words: [
                            {<ls>}
                            {<Id.Lit_Star '*'> <Id.Lit_At '@'>}
                            {<Id.Lit_Star '*'> <Id.Lit_Other '%'>}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-d> <Id.Lit_At '@'>} {<-f1>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-d> <Id.Lit_Other '%'>} {<-f1>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <uniq>
                          more_env: []
                          words: [{<uniq>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                  ]
                  spids: [2307 2324]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ ($ Id.VSub_Number 2))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <tables>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <ls>
                          more_env: []
                          words: [
                            {<ls>}
                            {<Id.Lit_Star '*'> <Id.Lit_At '@'>}
                            {<Id.Lit_Star '*'> <Id.Lit_Other '%'>}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-d> <Id.Lit_At '@'>} {<-f1>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-d> <Id.Lit_Other '%'>} {<-f1>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <uniq>
                          more_env: []
                          words: [{<uniq>} {<-u>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                  ]
                  spids: [2360 2378]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ ($ Id.VSub_Number 2))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <views>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <ls>
                          more_env: []
                          words: [{<ls>} {<Id.Lit_Star '*'> <Id.Lit_Other '%'>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cut>
                          more_env: []
                          words: [{<cut>} {<-d> <Id.Lit_Other '%'>} {<-f1>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                  ]
                  spids: [2417 2435]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ ($ Id.VSub_Number 2))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <commands>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (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: {(DQ <END>)}
                              here_end_tok: <Id.Undefined_Tok ''>
                              stdin_parts: [
                                <'/p is print\n'>
                                <'/g is go(execute)\n'>
                                <'/q is quit\n'>
                                <'/e is edit\n'>
                                <'/i is include\n'>
                                <'/w is write\n'>
                                <'/r is reset(clear)\n'>
                                <'/s is shell\n'>
                                <'/p/g print and go\n'>
                                <
'The number sign(#) may be used at the start of a line for comments.\n'
                                >
                              ]
                            )
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [2456 2473]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <syntax>
                      more_env: []
                      words: [{<syntax>} {($ Id.VSub_Number 2)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  ops: [<Id.Op_DAmp _>]
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'TABLE='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'TABLE='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE='> name:TABLE)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number 2))}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <update_view>
                  more_env: []
                  words: [{<update_view>} {(DQ ($ Id.VSub_DollarName TABLE))}]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-f>}
                                {(DQ ($ Id.VSub_Number 2) <'@'>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {(DQ ($ Id.VSub_DollarName NL) <' <'> ($ Id.VSub_Number 2) <'>'>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <cat>
                              more_env: []
                              words: [{<cat>} {(DQ ($ Id.VSub_Number 2) <'@'>)}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-f>}
                                {(DQ (${ Id.VSub_Number 2) <'%'>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {($ Id.VSub_DollarName NOCR1)}
                                {
                                  (DQ ($ Id.VSub_DollarName NL) <' View:\t'> 
                                    ($ Id.VSub_DollarName NOCR2)
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <set>
                              more_env: []
                              words: [
                                {<set>}
                                {<X>}
                                {
                                  (CommandSub
                                    left_token: <Id.Left_Backtick '`'>
                                    child: 
                                      (command.Simple
                                        blame_tok: <cat>
                                        more_env: []
                                        words: [{<cat>} {($ Id.VSub_Number 2) <Id.Lit_Other '%'>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Backtick_Right '`'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ ($ Id.VSub_Number 1) <.> ($ Id.VSub_Number 2) <' = '> 
                                    ($ Id.VSub_Number 3) <.> ($ Id.VSub_Number 4)
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {(DQ ($ Id.VSub_DollarName NL) <' Rows:\t'>) 
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <cat>
                                        more_env: []
                                        words: [
                                          {<cat>}
                                          {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <wc>
                                        more_env: []
                                        words: [{<wc>} {<-l>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [2519 2534]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ ($ Id.VSub_DollarName TABLE) <' does not exist.'>)}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<2>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <syntax>
                      more_env: []
                      words: [{<syntax>} {<help>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <create>
      name: create
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {<-f>}
                            {(DQ ($ Id.VSub_Number 2) <'@'>)}
                            {<-o>}
                            {<-f>}
                            {(DQ ($ Id.VSub_Number 2) <'%'>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Table already exists.'>)}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<2>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [2685 2708]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <Xview>)}
                            {<-a>}
                            {($ Id.VSub_Pound '#')}
                            {<-gt>}
                            {<2>}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {($ Id.VSub_Pound '#')}
                                    {<-ne>}
                                    {<6>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <syntax>
                              more_env: []
                              words: [{<syntax>} {<create>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [2751 2764]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ <X> ($ Id.VSub_Number 2))}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(DQ <'X('>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <'Bad syntax'>)}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <syntax>
                              more_env: []
                              words: [{<syntax>} {<create>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'TABLE1='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'TABLE1='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE1='> name:TABLE1)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Simple
                                          blame_tok: <expr>
                                          more_env: []
                                          words: [
                                            {<expr>}
                                            {($ Id.VSub_Number 3)}
                                            {<Id.Lit_Colon ':'>}
                                            {(SQ <'\\([^\\.]*\\)'>)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Backtick_Right '`'>
                                    )
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'FIELD1='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'FIELD1='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FIELD1='> name:FIELD1)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Simple
                                          blame_tok: <expr>
                                          more_env: []
                                          words: [
                                            {<expr>}
                                            {($ Id.VSub_Number 3)}
                                            {<Id.Lit_Colon ':'>}
                                            {(SQ <'[^\\.]*.\\(.*\\)'>)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Backtick_Right '`'>
                                    )
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'TABLE='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'TABLE='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE='> name:TABLE)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_DollarName TABLE1))}
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <lookup_field>
                          more_env: []
                          words: [{<lookup_field>} {(DQ ($ Id.VSub_DollarName FIELD1))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ ($ Id.VSub_QMark '?'))}
                                {<-ne>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <'Bad table or field name'>)}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ <X> ($ Id.VSub_Number 4))}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(DQ <'X='>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <'Bad syntax'>)}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <syntax>
                              more_env: []
                              words: [{<syntax>} {<create>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'TABLE2='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'TABLE2='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE2='> name:TABLE2)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Simple
                                          blame_tok: <expr>
                                          more_env: []
                                          words: [
                                            {<expr>}
                                            {($ Id.VSub_Number 5)}
                                            {<Id.Lit_Colon ':'>}
                                            {(SQ <'\\([^\\.]*\\)'>)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Backtick_Right '`'>
                                    )
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'FIELD2='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'FIELD2='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FIELD2='> name:FIELD2)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_Backtick '`'>
                                      child: 
                                        (command.Simple
                                          blame_tok: <expr>
                                          more_env: []
                                          words: [
                                            {<expr>}
                                            {($ Id.VSub_Number 5)}
                                            {<Id.Lit_Colon ':'>}
                                            {(SQ <'[^\\.]*.\\(.*\\)'>)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Backtick_Right '`'>
                                    )
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'TABLE='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'TABLE='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE='> name:TABLE)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_DollarName TABLE2))}
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <lookup_field>
                          more_env: []
                          words: [{<lookup_field>} {(DQ ($ Id.VSub_DollarName FIELD2))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ ($ Id.VSub_QMark '?'))}
                                {<-ne>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <'Bad table or field name'>)}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ <X> ($ Id.VSub_Number 2))}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(DQ <'X('>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ <'Bad syntax'>)}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_GreatAnd '1>&'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<2>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <syntax>
                              more_env: []
                              words: [{<syntax>} {<create>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {
                              (DQ ($ Id.VSub_DollarName TABLE1) <' '> ($ Id.VSub_DollarName FIELD1) 
                                <' '> ($ Id.VSub_DollarName TABLE2) <' '> ($ Id.VSub_DollarName FIELD2) <' '> ($ Id.VSub_Number 1)
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_Number 1) <Id.Lit_Other '%'>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <update_view>
                          more_env: []
                          words: [{<update_view>} {(DQ ($ Id.VSub_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <OK>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [2720 2746]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <Xtable>)}
                            {<-a>}
                            {($ Id.VSub_Pound '#')}
                            {<-ge>}
                            {<5>}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 3))}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {(DQ <'X('>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'Bad syntax'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<create>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'TABLE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'TABLE='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE='> name:TABLE)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number 2))}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>} {<3>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <Id.Redir_Great '>'>
                      more_env: []
                      words: []
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName TABLE) <Id.Lit_At '@'>}
                        )
                      ]
                      do_fork: F
                    )
                    (command.Simple
                      blame_tok: <Id.Redir_Great '>'>
                      more_env: []
                      words: []
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}
                        )
                      ]
                      do_fork: F
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_Pound '#')}
                                {<-ge>}
                                {<2>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ ($ Id.VSub_Number 1) <'\t'> ($ Id.VSub_Number 2))}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName TABLE) <Id.Lit_At '@'>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>} {<2>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {(DQ <'X)'>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'Bad syntax'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <rm>
                          more_env: []
                          words: [
                            {<rm>}
                            {<-f>}
                            {($ Id.VSub_DollarName TABLE) <Id.Lit_LBracket '['> <Id.Lit_At '@'> 
                              <Id.Lit_TildeLike '~'> <Id.Lit_RBracket ']'>
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<create>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <OK>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [3115 3142]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Improper syntax ('> ($ Id.VSub_Number 1) <')'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <syntax>
                  more_env: []
                  words: [{<syntax>} {<create>}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <drop>
      name: drop
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ ($ Id.VSub_Number 2))}
                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                    {(DQ <table>)}
                    {<-a>}
                    {(DQ ($ Id.VSub_Number 2))}
                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                    {(DQ <view>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Syntax error.'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <syntax>
                  more_env: []
                  words: [{<syntax>} {<drop>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ ($ Id.VSub_Number 2))}
                    {<Id.Lit_Equals '='>}
                    {(DQ <table>)}
                    {<-a>}
                    {<-f>}
                    {(DQ ($ Id.VSub_Number 3) <'%'>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {(DQ <'Can not drop, '> ($ Id.VSub_Number 2) <' is a view, not a table'>)}
                  ]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ ($ Id.VSub_Number 2))}
                    {<Id.Lit_Equals '='>}
                    {(DQ <view>)}
                    {<-a>}
                    {<Id.KW_Bang '!'>}
                    {<-f>}
                    {(DQ ($ Id.VSub_Number 3) <'%'>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Can not drop, '> ($ Id.VSub_Number 2) <' is not a view'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {<-f>}
                            {(DQ ($ Id.VSub_Number 3) <'@'>)}
                            {<-o>}
                            {<-f>}
                            {(DQ ($ Id.VSub_Number 3) <'%'>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [
                        {<rm>}
                        {<-f>}
                        {($ Id.VSub_Number 3) <Id.Lit_At '@'>}
                        {($ Id.VSub_Number 3) <Id.Lit_TildeLike '~'>}
                        {($ Id.VSub_Number 3) <Id.Lit_Other '%'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <OK>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [3490 3514]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'No such table'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <insert>
      name: insert
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ <X> ($ Id.VSub_Number 1))}
                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                    {(DQ <Xinto>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Improper syntax ('> ($ Id.VSub_Number 1) <')'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <syntax>
                  more_env: []
                  words: [{<syntax>} {<insert>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'TABLE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'TABLE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE='> name:TABLE)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <update_view>
                  more_env: []
                  words: [{<update_view>} {(DQ ($ Id.VSub_DollarName TABLE))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Can not insert into a view'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<Id.KW_Bang '!'>}
                    {<-f>}
                    {(DQ ($ Id.VSub_DollarName TABLE) <'@'>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Table does not exist'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ATTRIB='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ATTRIB='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ATTRIB='> name:ATTRIB)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_Backtick '`'>
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <cat>
                                  more_env: []
                                  words: [{<cat>} {($ Id.VSub_DollarName TABLE) <Id.Lit_At '@'>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <wc>
                                  more_env: []
                                  words: [{<wc>} {<-l>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          right: <Id.Backtick_Right '`'>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'XASGN='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'XASGN='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'XASGN='> name:XASGN)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'XECHO='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'XECHO='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'XECHO='> name:XECHO)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'echo '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"'))
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {($ Id.VSub_Pound '#')}
                            {<-gt>}
                            {<0>}
                            {<-a>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <'X('>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ATTRIB2='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ATTRIB2='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ATTRIB2='> name:ATTRIB2)
                          op: assign_op.Equal
                          rhs: {(DQ <0>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_Pound '#')}
                                {<-gt>}
                                {<0>}
                                {<-a>}
                                {(DQ <X> ($ Id.VSub_Number 1))}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(DQ <'X)'>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <lookup_field>
                              more_env: []
                              words: [{<lookup_field>} {(DQ ($ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ ($ Id.VSub_QMark '?'))}
                                    {<-ne>}
                                    {<0>}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [
                                    {<echo>}
                                    {(DQ <'Bad field name. ('> ($ Id.VSub_Number 1) <')'>)}
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_GreatAnd '1>&'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<2>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                )
                              ]
                              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'XASGN='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'XASGN='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'XASGN='> name:XASGN)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName XASGN) <' X'> 
                                        ($ Id.VSub_DollarName OUTFIELDNUM) <'='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'> ch:'`') <'eval echo '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <1> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'> ch:'`') <' ; shift;'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'ATTRIB2='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'ATTRIB2='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'ATTRIB2='>
                                      name: ATTRIB2
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            blame_tok: <expr>
                                            more_env: []
                                            words: [
                                              {<expr>}
                                              {($ Id.VSub_DollarName ATTRIB2)}
                                              {<Id.Lit_Other '+'>}
                                              {<1>}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {(DQ <'X)'>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'Syntax error ('> ($ Id.VSub_Number 1) <')'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<insert>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'POS='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'POS='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'POS='> name:POS)
                          op: assign_op.Equal
                          rhs: {(DQ <1>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ ($ Id.VSub_DollarName POS))}
                                {<-le>}
                                {(DQ ($ Id.VSub_DollarName ATTRIB))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [{<eval>} {<X> ($ Id.VSub_DollarName POS) <Id.Lit_Equals '='> (DQ )}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ ($ Id.VSub_DollarName POS))}
                                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                    {(DQ <1>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'XECHO='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'XECHO='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'XECHO='>
                                          name: XECHO
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ ($ Id.VSub_DollarName XECHO) 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <TAB>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'XECHO='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'XECHO='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'XECHO='> name:XECHO)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName XECHO) 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <X> ($ Id.VSub_DollarName POS)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'POS='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'POS='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'POS='> name:POS)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_Backtick '`'>
                                        child: 
                                          (command.Simple
                                            blame_tok: <expr>
                                            more_env: []
                                            words: [
                                              {<expr>}
                                              {($ Id.VSub_DollarName POS)}
                                              {<Id.Lit_Other '+'>}
                                              {<1>}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Backtick_Right '`'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'XECHO='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'XECHO='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'XECHO='> name:XECHO)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName XECHO) 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\"'>
                                  ch: '"'
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ATTRIB='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ATTRIB='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ATTRIB='> name:ATTRIB)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName ATTRIB2))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3711 3737]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <Xselect>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [
                        {<eval>}
                        {<set>}
                        {<X>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Subshell
                                  left: <Id.Op_LParen _>
                                  child: 
                                    (command.CommandList
                                      children: [
                                        (command.Sentence
                                          child: 
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'SUBSELECT='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'SUBSELECT='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'SUBSELECT='>
                                                      name: SUBSELECT
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(SQ <Y>)}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                        (command.Simple
                                          blame_tok: <select_>
                                          more_env: []
                                          words: [{<select_>} {(DQ ($ Id.VSub_At '@'))}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  right: <Id.Right_Subshell _>
                                  redirects: []
                                )
                              right: <Id.Backtick_Right '`'>
                            ) <' '> <Id.Lit_BadBackslash '\\'> <')'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [4002 4020]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {(DQ <Xvalues>)}
                            {<-o>}
                            {(DQ <X> ($ Id.VSub_Number 2))}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {(SQ <'X('>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'Improper syntax ('> ($ Id.VSub_Number 1) <')'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<insert>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                    )
                  ]
                  spids: [4058 4092]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <shift>
                  more_env: []
                  words: [{<shift>} {<2>}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [LAST]
              iterable: (for_iter__Args)
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <Id.Lit_Colon ':'>
                          more_env: []
                          words: [{<Id.Lit_Colon ':'>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ <X> ($ Id.VSub_DollarName LAST))}
                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                    {(DQ <'X)'>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Improper syntax'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <syntax>
                  more_env: []
                  words: [{<syntax>} {<insert>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Simple
                                      blame_tok: <expr>
                                      more_env: []
                                      words: [
                                        {<expr>}
                                        {
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\('>
                                            ch: '('
                                          )
                                        }
                                        {($ Id.VSub_Pound '#')}
                                        {<->}
                                        {<1>}
                                        {
                                          (word_part.EscapedLiteral
                                            token: <Id.Lit_EscapedChar '\\)'>
                                            ch: ')'
                                          )
                                        }
                                        {<Id.Lit_Other '%'>}
                                        {($ Id.VSub_DollarName ATTRIB)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            }
                            {<-ne>}
                            {<0>}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Incorrect number of values.'>)}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<2>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [4183 4220]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'ROWS='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'ROWS='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ROWS='> name:ROWS)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_Backtick '`'>
                              child: 
                                (command.Simple
                                  blame_tok: <expr>
                                  more_env: []
                                  words: [
                                    {<expr>}
                                    {
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\('>
                                        ch: '('
                                      )
                                    }
                                    {($ Id.VSub_Pound '#')}
                                    {<->}
                                    {<1>}
                                    {
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\)'>
                                        ch: ')'
                                      )
                                    }
                                    {<'/'>}
                                    {($ Id.VSub_DollarName ATTRIB)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Backtick_Right '`'>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {($ Id.VSub_Pound '#')}
                            {<-gt>}
                            {<1>}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ ($ Id.VSub_DollarName XASGN))}
                                        {<Id.Lit_Equals '='>}
                                        {(DQ )}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [
                                    {<echo>}
                                    {($ Id.VSub_DollarName NOCR1)}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_Backtick '`'>
                                          child: 
                                            (command.Simple
                                              blame_tok: <eval>
                                              more_env: []
                                              words: [{<eval>} {<echo>} {($ Id.VSub_Number 1)}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Backtick_Right '`'>
                                        ) ($ Id.VSub_DollarName NOCR2)
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_DGreat '>>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <shift>
                                  more_env: []
                                  words: [{<shift>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.WhileUntil
                                  keyword: <Id.KW_While while>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {
                                              (DQ 
                                                (CommandSub
                                                  left_token: <Id.Left_Backtick '`'>
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <expr>
                                                      more_env: []
                                                      words: [
                                                        {<expr>}
                                                        {
                                                          (word_part.EscapedLiteral
                                                            token: <Id.Lit_EscapedChar '\\('>
                                                            ch: '('
                                                          )
                                                        }
                                                        {($ Id.VSub_Pound '#')}
                                                        {<->}
                                                        {<1>}
                                                        {
                                                          (word_part.EscapedLiteral
                                                            token: <Id.Lit_EscapedChar '\\)'>
                                                            ch: ')'
                                                          )
                                                        }
                                                        {<Id.Lit_Other '%'>}
                                                        {($ Id.VSub_DollarName ATTRIB)}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  right: <Id.Backtick_Right '`'>
                                                )
                                              )
                                            }
                                            {<-ne>}
                                            {<0>}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  body: 
                                    (command.DoGroup
                                      left: <Id.KW_Do do>
                                      children: [
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          words: [
                                            {<echo>}
                                            {($ Id.VSub_DollarName NOCR1)}
                                            {
                                              (DQ ($ Id.VSub_DollarName TAB) 
                                                (CommandSub
                                                  left_token: <Id.Left_Backtick '`'>
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <eval>
                                                      more_env: []
                                                      words: [{<eval>} {<echo>} {($ Id.VSub_Number 1)}]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  right: <Id.Backtick_Right '`'>
                                                ) ($ Id.VSub_DollarName NOCR2)
                                              )
                                            }
                                          ]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_DGreat '>>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: 
                                                {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <shift>
                                          more_env: []
                                          words: [{<shift>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      right: <Id.KW_Done done>
                                    )
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ )}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_DGreat '>>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              spids: [4279 4295]
                            )
                          ]
                          else_kw: <Id.KW_Else else>
                          else_action: [
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [{<eval>} {($ Id.VSub_DollarName XASGN)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [{<eval>} {($ Id.VSub_DollarName XECHO)}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'('> ($ Id.VSub_DollarName ROWS) <' rows)'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <delete>
      name: delete
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'TABLE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'TABLE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE='> name:TABLE)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 2))}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <update_view>
                  more_env: []
                  words: [{<update_view>} {(DQ ($ Id.VSub_DollarName TABLE))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'You can not delete from a view.'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<Id.KW_Bang '!'>}
                    {<-f>}
                    {(DQ ($ Id.VSub_DollarName TABLE) <'@'>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName TABLE) <' does not exit.'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'WHERE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'WHERE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHERE='> name:WHERE)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 3))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <Xwhere>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>} {<2>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <where>
                          more_env: []
                          words: [{<where>} {(DQ ($ Id.VSub_At '@'))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <Id.VSub_DollarName '$AWK'>
                          more_env: []
                          words: [
                            {($ Id.VSub_DollarName AWK)}
                            {<-F> (DQ <'\t'>)}
                            {
                              (DQ <'! '> ($ Id.VSub_DollarName WHERE) <' { cnt += 1 ; print } \n'> 
                                <'\t\t\tEND { printf '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'( %1d rows.)'> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\\\'>
                                  ch: '\\'
                                ) <n> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <', (NR - cnt) '> <'\t\t\t>'> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\"'>
                                  ch: '"'
                                ) <'/tmp/'> ($ Id.VSub_Dollar '$') <row> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\"'>
                                  ch: '"'
                                ) <' }'>
                              )
                            }
                            {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <mv>
                          more_env: []
                          words: [
                            {<mv>}
                            {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                            {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <cat>
                          more_env: []
                          words: [{<cat>} {<'/tmp/'> ($ Id.VSub_Dollar '$') <row>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                    )
                  ]
                  spids: [4532 4550]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {(SQ <'('>) 
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <cat>
                                more_env: []
                                words: [{<cat>} {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <wc>
                                more_env: []
                                words: [{<wc>} {<-l>}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      ) (SQ <' rows)'>)
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <Id.Redir_Great '>'>
                  more_env: []
                  words: []
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}
                    )
                  ]
                  do_fork: F
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <update>
      name: update
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'TABLE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'TABLE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE='> name:TABLE)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 2))}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <update_view>
                  more_env: []
                  words: [{<update_view>} {(DQ ($ Id.VSub_DollarName TABLE))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Can not update a view.'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<Id.KW_Bang '!'>}
                    {<-f>}
                    {(DQ ($ Id.VSub_DollarName TABLE) <'@'>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName TABLE) <' does not exit.'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ <X> ($ Id.VSub_Number 3))}
                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                    {(DQ <Xset>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <'Improper syntax.'>)}]
                  redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <syntax>
                  more_env: []
                  words: [{<syntax>} {<update>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>} {<3>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ASSIGN='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ASSIGN='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ASSIGN='> name:ASSIGN)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_Pound '#')}
                        {<-gt>}
                        {<0>}
                        {<-a>}
                        {(DQ <X> ($ Id.VSub_Number 1))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {(DQ <Xwhere>)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <lookup_field>
                          more_env: []
                          words: [{<lookup_field>} {(DQ ($ Id.VSub_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 2))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <'X='>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'ASSIGN='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'ASSIGN='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ASSIGN='> name:ASSIGN)
                              op: assign_op.Equal
                              rhs: {(DQ ($ Id.VSub_DollarName ASSIGN) <' ; '>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ASSIGN='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ASSIGN='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ASSIGN='> name:ASSIGN)
                          op: assign_op.Equal
                          rhs: 
                            {(DQ ($ Id.VSub_DollarName ASSIGN) <' '> ($ Id.VSub_DollarName OUTFIELD))}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'WHERE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'WHERE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHERE='> name:WHERE)
                  op: assign_op.Equal
                  rhs: {(DQ )}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <Xwhere>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <where>
                          more_env: []
                          words: [{<where>} {(DQ ($ Id.VSub_At '@'))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [4869 4888]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.VSub_DollarName '$AWK'>
                  more_env: []
                  words: [
                    {($ Id.VSub_DollarName AWK)}
                    {<-F> (DQ <'\t'>)}
                    {
                      (DQ <'BEGIN { OFS = '> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) <'\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' }\n'> <'\t\t'> 
                        ($ Id.VSub_DollarName WHERE) <' \t{ '> ($ Id.VSub_DollarName ASSIGN) <'; cnt += 1 }\n'> <'\t\t\t{ print } \n'> <'\t\tEND \t{ printf '> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) <'( %1d rows)'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <n> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) <', cnt >'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'/tmp/'> 
                        ($ Id.VSub_Dollar '$') <row> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' }'>
                      )
                    }
                    {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <mv>
                  more_env: []
                  words: [
                    {<mv>}
                    {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                    {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {<'/tmp/'> ($ Id.VSub_Dollar '$') <row>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <select_>
      name: select_
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {(DQ ($ Id.VSub_DollarName DEBUG))}
                    {<Id.Lit_Equals '='>}
                    {(DQ <Y>)}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <set>
                  more_env: []
                  words: [{<set>} {<-x>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'UNION='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'UNION='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNION='> name:UNION)
                  op: assign_op.Equal
                  rhs: {(DQ <Y>)}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {(DQ ($ Id.VSub_DollarName UNION))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {(DQ )}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'INAGG='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'INAGG='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INAGG='> name:INAGG)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'FROM='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'FROM='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FROM='> name:FROM)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'UNION='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'UNION='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'UNION='> name:UNION)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'TABLE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'TABLE='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLE='> name:TABLE)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ForEach
                      keyword: <Id.KW_For for>
                      iter_names: [ATABLE]
                      iterable: (for_iter__Args)
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ <X> ($ Id.VSub_DollarName ATABLE))}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <Xwhere>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Break break>
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ <X> ($ Id.VSub_DollarName ATABLE))}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <Xorder>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Break break>
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ <X> ($ Id.VSub_DollarName ATABLE))}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <Xunion>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Break break>
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ <X> ($ Id.VSub_DollarName ATABLE))}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <Xfrom>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'FROM='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'FROM='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FROM='> name:FROM)
                                      op: assign_op.Equal
                                      rhs: {(DQ <Y>)}
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Continue continue>
                                )
                              ]
                              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ ($ Id.VSub_DollarName FROM))}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {<Id.KW_Bang '!'>}
                                            {<-f>}
                                            {(DQ ($ Id.VSub_DollarName ATABLE) <'@'>)}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          words: [
                                            {<echo>}
                                            {(DQ ($ Id.VSub_DollarName ATABLE) <' does not exist.'>)}
                                          ]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_GreatAnd '1>&'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {<2>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.ControlFlow
                                          keyword: <Id.ControlFlow_Return return>
                                          arg_word: {<1>}
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                                    )
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<Id.KW_Bang '!'>}
                                                    {(DQ ($ Id.VSub_DollarName TABLE))}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'TABLE='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'TABLE='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'TABLE='>
                                                      name: TABLE
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ ($ Id.VSub_DollarName ATABLE))}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [5202 5215]
                                        )
                                      ]
                                      else_kw: <Id.KW_Else else>
                                      else_action: [
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'JTABLE='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'JTABLE='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'JTABLE='>
                                                  name: JTABLE
                                                )
                                              op: assign_op.Equal
                                              rhs: {(DQ ($ Id.VSub_DollarName TABLE))}
                                            )
                                          ]
                                          redirects: []
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'PREV='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'PREV='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'PREV='>
                                                  name: PREV
                                                )
                                              op: assign_op.Equal
                                              rhs: {(DQ )}
                                            )
                                          ]
                                          redirects: []
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'PPREV='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'PPREV='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'PPREV='>
                                                  name: PPREV
                                                )
                                              op: assign_op.Equal
                                              rhs: {(DQ )}
                                            )
                                          ]
                                          redirects: []
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'FOUND='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'FOUND='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'FOUND='>
                                                  name: FOUND
                                                )
                                              op: assign_op.Equal
                                              rhs: {(DQ )}
                                            )
                                          ]
                                          redirects: []
                                        )
                                        (command.ForEach
                                          keyword: <Id.KW_For for>
                                          iter_names: [GETJ]
                                          iterable: (for_iter__Args)
                                          body: 
                                            (command.DoGroup
                                              left: <Id.KW_Do do>
                                              children: [
                                                (command.If
                                                  if_kw: <Id.KW_If if>
                                                  arms: [
                                                    (IfArm
                                                      keyword: <Id.KW_If if>
                                                      cond: 
                                                        (condition.Shell
                                                          commands: [
                                                            (command.Simple
                                                              blame_tok: <Id.Lit_LBracket '['>
                                                              more_env: []
                                                              words: [
                                                                {<Id.Lit_LBracket '['>}
                                                                {(DQ ($ Id.VSub_DollarName PREV))}
                                                                {<Id.Lit_Equals '='>}
                                                                {(DQ <'='>)}
                                                                {<Id.Lit_RBracket ']'>}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          ]
                                                        )
                                                      then_kw: <Id.KW_Then then>
                                                      action: [
                                                        (command.ShAssignment
                                                          left: <Id.Lit_VarLike 'TABLE='>
                                                          pairs: [
                                                            (AssignPair
                                                              left: <Id.Lit_VarLike 'TABLE='>
                                                              lhs: 
                                                                (sh_lhs_expr.Name
                                                                  left: <Id.Lit_VarLike 'TABLE='>
                                                                  name: TABLE
                                                                )
                                                              op: assign_op.Equal
                                                              rhs: {(DQ ($ Id.VSub_DollarName JTABLE))}
                                                            )
                                                          ]
                                                          redirects: []
                                                        )
                                                        (command.AndOr
                                                          children: [
                                                            (command.Simple
                                                              blame_tok: <lookup_field>
                                                              more_env: []
                                                              words: [
                                                                {<lookup_field>}
                                                                {(DQ ($ Id.VSub_DollarName PPREV))}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                            (command.ShAssignment
                                                              left: <Id.Lit_VarLike 'TABLE='>
                                                              pairs: [
                                                                (AssignPair
                                                                  left: <Id.Lit_VarLike 'TABLE='>
                                                                  lhs: 
                                                                    (sh_lhs_expr.Name
                                                                      left: <Id.Lit_VarLike 'TABLE='>
                                                                      name: TABLE
                                                                    )
                                                                  op: assign_op.Equal
                                                                  rhs: 
                                                                    {
                                                                      (DQ 
                                                                        ($ Id.VSub_DollarName ATABLE)
                                                                      )
                                                                    }
                                                                )
                                                              ]
                                                              redirects: []
                                                            )
                                                            (command.Simple
                                                              blame_tok: <lookup_field>
                                                              more_env: []
                                                              words: [
                                                                {<lookup_field>}
                                                                {(DQ ($ Id.VSub_DollarName GETJ))}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                            (command.ShAssignment
                                                              left: <Id.Lit_VarLike 'FOUND='>
                                                              pairs: [
                                                                (AssignPair
                                                                  left: <Id.Lit_VarLike 'FOUND='>
                                                                  lhs: 
                                                                    (sh_lhs_expr.Name
                                                                      left: <Id.Lit_VarLike 'FOUND='>
                                                                      name: FOUND
                                                                    )
                                                                  op: assign_op.Equal
                                                                  rhs: {(DQ <Y1>)}
                                                                )
                                                              ]
                                                              redirects: []
                                                            )
                                                            (command.ControlFlow
                                                              keyword: <Id.ControlFlow_Break break>
                                                            )
                                                          ]
                                                          ops: [
                                                            <Id.Op_DAmp _>
                                                            <Id.Op_DAmp _>
                                                            <Id.Op_DAmp _>
                                                            <Id.Op_DAmp _>
                                                          ]
                                                        )
                                                        (command.ShAssignment
                                                          left: <Id.Lit_VarLike 'TABLE='>
                                                          pairs: [
                                                            (AssignPair
                                                              left: <Id.Lit_VarLike 'TABLE='>
                                                              lhs: 
                                                                (sh_lhs_expr.Name
                                                                  left: <Id.Lit_VarLike 'TABLE='>
                                                                  name: TABLE
                                                                )
                                                              op: assign_op.Equal
                                                              rhs: {(DQ ($ Id.VSub_DollarName ATABLE))}
                                                            )
                                                          ]
                                                          redirects: []
                                                        )
                                                        (command.AndOr
                                                          children: [
                                                            (command.Simple
                                                              blame_tok: <lookup_field>
                                                              more_env: []
                                                              words: [
                                                                {<lookup_field>}
                                                                {(DQ ($ Id.VSub_DollarName PPREV))}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                            (command.ShAssignment
                                                              left: <Id.Lit_VarLike 'TABLE='>
                                                              pairs: [
                                                                (AssignPair
                                                                  left: <Id.Lit_VarLike 'TABLE='>
                                                                  lhs: 
                                                                    (sh_lhs_expr.Name
                                                                      left: <Id.Lit_VarLike 'TABLE='>
                                                                      name: TABLE
                                                                    )
                                                                  op: assign_op.Equal
                                                                  rhs: 
                                                                    {
                                                                      (DQ 
                                                                        ($ Id.VSub_DollarName JTABLE)
                                                                      )
                                                                    }
                                                                )
                                                              ]
                                                              redirects: []
                                                            )
                                                            (command.Simple
                                                              blame_tok: <lookup_field>
                                                              more_env: []
                                                              words: [
                                                                {<lookup_field>}
                                                                {(DQ ($ Id.VSub_DollarName GETJ))}
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                            (command.ShAssignment
                                                              left: <Id.Lit_VarLike 'FOUND='>
                                                              pairs: [
                                                                (AssignPair
                                                                  left: <Id.Lit_VarLike 'FOUND='>
                                                                  lhs: 
                                                                    (sh_lhs_expr.Name
                                                                      left: <Id.Lit_VarLike 'FOUND='>
                                                                      name: FOUND
                                                                    )
                                                                  op: assign_op.Equal
                                                                  rhs: {(DQ <Y2>)}
                                                                )
                                                              ]
                                                              redirects: []
                                                            )
                                                            (command.ControlFlow
                                                              keyword: <Id.ControlFlow_Break break>
                                                            )
                                                          ]
                                                          ops: [
                                                            <Id.Op_DAmp _>
                                                            <Id.Op_DAmp _>
                                                            <Id.Op_DAmp _>
                                                            <Id.Op_DAmp _>
                                                          ]
                                                        )
                                                      ]
                                                      spids: [5254 5271]
                                                    )
                                                  ]
                                                  else_action: []
                                                  fi_kw: <Id.KW_Fi fi>
                                                  redirects: []
                                                )
                                                (command.ShAssignment
                                                  left: <Id.Lit_VarLike 'PPREV='>
                                                  pairs: [
                                                    (AssignPair
                                                      left: <Id.Lit_VarLike 'PPREV='>
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'PPREV='>
                                                          name: PPREV
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: {(DQ ($ Id.VSub_DollarName PREV))}
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                                (command.ShAssignment
                                                  left: <Id.Lit_VarLike 'PREV='>
                                                  pairs: [
                                                    (AssignPair
                                                      left: <Id.Lit_VarLike 'PREV='>
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'PREV='>
                                                          name: PREV
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: {(DQ ($ Id.VSub_DollarName GETJ))}
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                              ]
                                              right: <Id.KW_Done done>
                                            )
                                          redirects: []
                                        )
                                        (command.AndOr
                                          children: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {<Id.KW_Bang '!'>}
                                                {(DQ ($ Id.VSub_DollarName FOUND))}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <echo>
                                              more_env: []
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ <'Join not found, '> <Id.Lit_BadBackslash '\\'> 
                                                    <c>
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <echo>
                                              more_env: []
                                              words: [{<echo>} {(DQ <'try reordering tables.'>)}]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_GreatAnd '1>&'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<2>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                            (command.ControlFlow
                                              keyword: <Id.ControlFlow_Return return>
                                              arg_word: {<1>}
                                            )
                                          ]
                                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                                        )
                                        (command.If
                                          if_kw: <Id.KW_If if>
                                          arms: [
                                            (IfArm
                                              keyword: <Id.KW_If if>
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (command.Simple
                                                      blame_tok: <Id.Lit_LBracket '['>
                                                      more_env: []
                                                      words: [
                                                        {<Id.Lit_LBracket '['>}
                                                        {(DQ ($ Id.VSub_DollarName FOUND))}
                                                        {<Id.Lit_Equals '='>}
                                                        {(DQ <Y1>)}
                                                        {<Id.Lit_RBracket ']'>}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                )
                                              then_kw: <Id.KW_Then then>
                                              action: [
                                                (command.Simple
                                                  blame_tok: <echo>
                                                  more_env: []
                                                  words: [
                                                    {<echo>}
                                                    {
                                                      (DQ ($ Id.VSub_DollarName JTABLE) <'\t'> 
                                                        ($ Id.VSub_DollarName PPREV) <'\t'> ($ Id.VSub_DollarName ATABLE) <'\t'> ($ Id.VSub_DollarName GETJ) <'\t/tmp/'> ($ Id.VSub_Dollar '$') 
                                                        <join2>
                                                      )
                                                    }
                                                  ]
                                                  redirects: [
                                                    (Redir
                                                      op: <Id.Redir_Great '>'>
                                                      loc: (redir_loc.Fd fd:1)
                                                      arg: 
                                                        {<'/tmp/'> ($ Id.VSub_Dollar '$') <join2> 
                                                          <Id.Lit_Other '%'>
                                                        }
                                                    )
                                                  ]
                                                  do_fork: T
                                                )
                                              ]
                                              spids: [5418 5435]
                                            )
                                          ]
                                          else_kw: <Id.KW_Else else>
                                          else_action: [
                                            (command.Simple
                                              blame_tok: <echo>
                                              more_env: []
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ ($ Id.VSub_DollarName ATABLE) <'\t'> 
                                                    ($ Id.VSub_DollarName PPREV) <'\t'> ($ Id.VSub_DollarName JTABLE) <'\t'> ($ Id.VSub_DollarName GETJ) <'\t/tmp/'> ($ Id.VSub_Dollar '$') 
                                                    <join2>
                                                  )
                                                }
                                              ]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_Great '>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {<'/tmp/'> ($ Id.VSub_Dollar '$') <join2> 
                                                      <Id.Lit_Other '%'>
                                                    }
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          ]
                                          fi_kw: <Id.KW_Fi fi>
                                          redirects: []
                                        )
                                        (command.Simple
                                          blame_tok: <update_view>
                                          more_env: []
                                          words: [
                                            {<update_view>}
                                            {<'/tmp/'> ($ Id.VSub_Dollar '$') <join2>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <mv>
                                          more_env: []
                                          words: [
                                            {<mv>}
                                            {<'/tmp/'> ($ Id.VSub_Dollar '$') <join2> 
                                              <Id.Lit_TildeLike '~'>
                                            }
                                            {<'/tmp/'> ($ Id.VSub_Dollar '$') <join> 
                                              <Id.Lit_TildeLike '~'>
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <mv>
                                          more_env: []
                                          words: [
                                            {<mv>}
                                            {<'/tmp/'> ($ Id.VSub_Dollar '$') <join2> <Id.Lit_At '@'>}
                                            {<'/tmp/'> ($ Id.VSub_Dollar '$') <join> <Id.Lit_At '@'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <expr>
                                          more_env: []
                                          words: [
                                            {<expr>}
                                            {(DQ ($ Id.VSub_DollarName RESULT))}
                                            {<Id.Lit_Colon ':'>}
                                            {(SQ <'[^:]:*\\(.*\\)'>)}
                                          ]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_DGreat '>>'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: 
                                                {<'/tmp/'> ($ Id.VSub_Dollar '$') <join> 
                                                  <Id.Lit_At '@'>
                                                }
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.Pipeline
                                          children: [
                                            (command.Simple
                                              blame_tok: <cut>
                                              more_env: []
                                              words: [
                                                {<cut>}
                                                {<-d> 
                                                  (word_part.EscapedLiteral
                                                    token: <Id.Lit_EscapedChar '\\\t'>
                                                    ch: '\t'
                                                  )
                                                }
                                                {<-f1>}
                                                {<'/tmp/'> ($ Id.VSub_Dollar '$') <join> 
                                                  <Id.Lit_TildeLike '~'>
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <paste>
                                              more_env: []
                                              words: [
                                                {<paste>}
                                                {<'/tmp/'> ($ Id.VSub_Dollar '$') <join> 
                                                  <Id.Lit_TildeLike '~'>
                                                }
                                                {<->}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_Great '>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          ]
                                          ops: [<Id.Op_Pipe _>]
                                        )
                                        (command.Simple
                                          blame_tok: <mv>
                                          more_env: []
                                          words: [
                                            {<mv>}
                                            {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                                            {<'/tmp/'> ($ Id.VSub_Dollar '$') <join> 
                                              <Id.Lit_TildeLike '~'>
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'TABLE='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'TABLE='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'TABLE='>
                                                  name: TABLE
                                                )
                                              op: assign_op.Equal
                                              rhs: {(DQ <'/tmp/'> ($ Id.VSub_Dollar '$') <join>)}
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                  ]
                                  spids: [5154 5165]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {<Id.KW_Bang '!'>}
                            {(DQ ($ Id.VSub_DollarName FROM))}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <'Syntax error.'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '1>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <syntax>
                          more_env: []
                          words: [{<syntax>} {<select>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {<1>}
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                    )
                    (command.Simple
                      blame_tok: <update_view>
                      more_env: []
                      words: [{<update_view>} {(DQ ($ Id.VSub_DollarName TABLE))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'DISTINCT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'DISTINCT='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DISTINCT='> name:DISTINCT)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ <X> ($ Id.VSub_Number 1))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <Xdistinct>)}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'DISTINCT='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'DISTINCT='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DISTINCT='> name:DISTINCT)
                              op: assign_op.Equal
                              rhs: {(DQ <Y>)}
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'FIELDS='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'FIELDS='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FIELDS='> name:FIELDS)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'PRINTF='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'PRINTF='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PRINTF='> name:PRINTF)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ <X> ($ Id.VSub_Number 1))}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(DQ <Xfrom>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ <X> ($ Id.VSub_Number 1))}
                                            {<Id.Lit_Equals '='>}
                                            {(SQ <'X*'>)}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <shift>
                                      more_env: []
                                      words: [{<shift>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <set>
                                      more_env: []
                                      words: [
                                        {<set>}
                                        {<X>}
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Pipeline
                                                children: [
                                                  (command.Simple
                                                    blame_tok: <cat>
                                                    more_env: []
                                                    words: [
                                                      {<cat>}
                                                      {($ Id.VSub_DollarName TABLE) <Id.Lit_At '@'>}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                  (command.Simple
                                                    blame_tok: <cut>
                                                    more_env: []
                                                    words: [
                                                      {<cut>}
                                                      {<-d> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\\t'>
                                                          ch: '\t'
                                                        )
                                                      }
                                                      {<-f1>}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                ]
                                                ops: [<Id.Op_Pipe _>]
                                              )
                                            right: <Id.Backtick_Right '`'>
                                          )
                                        }
                                        {(DQ ($ Id.VSub_At '@'))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <shift>
                                      more_env: []
                                      words: [{<shift>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [5707 5725]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.Simple
                                  blame_tok: <lookup_field>
                                  more_env: []
                                  words: [{<lookup_field>} {(DQ ($ Id.VSub_Number 1))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.If
                                  if_kw: <Id.KW_If if>
                                  arms: [
                                    (IfArm
                                      keyword: <Id.KW_If if>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {(DQ ($ Id.VSub_QMark '?'))}
                                                {<-ne>}
                                                {<0>}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Simple
                                          blame_tok: <do_aggreg>
                                          more_env: []
                                          words: [{<do_aggreg>} {(DQ ($ Id.VSub_At '@'))}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.If
                                          if_kw: <Id.KW_If if>
                                          arms: [
                                            (IfArm
                                              keyword: <Id.KW_If if>
                                              cond: 
                                                (condition.Shell
                                                  commands: [
                                                    (command.Simple
                                                      blame_tok: <Id.Lit_LBracket '['>
                                                      more_env: []
                                                      words: [
                                                        {<Id.Lit_LBracket '['>}
                                                        {(DQ ($ Id.VSub_QMark '?'))}
                                                        {<-eq>}
                                                        {<0>}
                                                        {<Id.Lit_RBracket ']'>}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  ]
                                                )
                                              then_kw: <Id.KW_Then then>
                                              action: [
                                                (command.ShAssignment
                                                  left: <Id.Lit_VarLike 'INAGG='>
                                                  pairs: [
                                                    (AssignPair
                                                      left: <Id.Lit_VarLike 'INAGG='>
                                                      lhs: 
                                                        (sh_lhs_expr.Name
                                                          left: <Id.Lit_VarLike 'INAGG='>
                                                          name: INAGG
                                                        )
                                                      op: assign_op.Equal
                                                      rhs: {(DQ <Y>)}
                                                    )
                                                  ]
                                                  redirects: []
                                                )
                                                (command.Simple
                                                  blame_tok: <shift>
                                                  more_env: []
                                                  words: [{<shift>} {<3>}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              spids: [5796 5811]
                                            )
                                          ]
                                          else_kw: <Id.KW_Else else>
                                          else_action: [
                                            (command.Simple
                                              blame_tok: <echo>
                                              more_env: []
                                              words: [
                                                {<echo>}
                                                {(DQ <'Bad field name ('> ($ Id.VSub_Number 1) <')'>)}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_GreatAnd '1>&'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {<2>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                            (command.ControlFlow
                                              keyword: <Id.ControlFlow_Return return>
                                              arg_word: {<1>}
                                            )
                                          ]
                                          fi_kw: <Id.KW_Fi fi>
                                          redirects: []
                                        )
                                      ]
                                      spids: [5772 5787]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ ($ Id.VSub_DollarName FIELDS))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'FIELDS='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'FIELDS='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'FIELDS='>
                                              name: FIELDS
                                            )
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName FIELDS) <','>)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  ops: [<Id.Op_DAmp _>]
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'FIELDS='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'FIELDS='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'FIELDS='>
                                          name: FIELDS
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ ($ Id.VSub_DollarName FIELDS) <' '> 
                                            ($ Id.VSub_DollarName OUTFIELD)
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.If
                                  if_kw: <Id.KW_If if>
                                  arms: [
                                    (IfArm
                                      keyword: <Id.KW_If if>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {(DQ ($ Id.VSub_DollarName SUBSELECT))}
                                                {<Id.Lit_Equals '='>}
                                                {(DQ )}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.AndOr
                                          children: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {<Id.KW_Bang '!'>}
                                                {(DQ ($ Id.VSub_DollarName PRINTF))}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'PRINTF='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'PRINTF='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'PRINTF='>
                                                      name: PRINTF
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {(DQ <'|'>)}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          ops: [<Id.Op_DAmp _>]
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'WIDTH='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'WIDTH='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'WIDTH='>
                                                  name: WIDTH
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (CommandSub
                                                    left_token: <Id.Left_Backtick '`'>
                                                    child: 
                                                      (command.Simple
                                                        blame_tok: <expr>
                                                        more_env: []
                                                        words: [
                                                          {<expr>}
                                                          {(DQ ($ Id.VSub_DollarName RESULT))}
                                                          {<Id.Lit_Colon ':'>}
                                                          {(SQ <'[^\t]*\t\\(.*\\)'>)}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    right: <Id.Backtick_Right '`'>
                                                  )
                                                }
                                            )
                                          ]
                                          redirects: []
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'PRINTF='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'PRINTF='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'PRINTF='>
                                                  name: PRINTF
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName PRINTF) <'%-'> 
                                                    ($ Id.VSub_DollarName WIDTH) <.> (${ Id.VSub_Name WIDTH) <'s|'>
                                                  )
                                                }
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      spids: [5876 5892]
                                    )
                                  ]
                                  else_kw: <Id.KW_Else else>
                                  else_action: [
                                    (command.If
                                      if_kw: <Id.KW_If if>
                                      arms: [
                                        (IfArm
                                          keyword: <Id.KW_If if>
                                          cond: 
                                            (condition.Shell
                                              commands: [
                                                (command.Simple
                                                  blame_tok: <Id.Lit_LBracket '['>
                                                  more_env: []
                                                  words: [
                                                    {<Id.Lit_LBracket '['>}
                                                    {<Id.KW_Bang '!'>}
                                                    {(DQ ($ Id.VSub_DollarName AGGREGATE))}
                                                    {<Id.Lit_RBracket ']'>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'PRINTF='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'PRINTF='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'PRINTF='>
                                                      name: PRINTF
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName PRINTF) 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\\\'>
                                                          ch: '\\'
                                                        ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <'%s'> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\\\'>
                                                          ch: '\\'
                                                        ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' '>
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [5954 5967]
                                        )
                                      ]
                                      else_kw: <Id.KW_Else else>
                                      else_action: [
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'PRINTF='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'PRINTF='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'PRINTF='>
                                                  name: PRINTF
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ ($ Id.VSub_DollarName PRINTF) <'%s'> 
                                                    <Id.Lit_BadBackslash '\\'> <n>
                                                  )
                                                }
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                  ]
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <shift>
                                  more_env: []
                                  words: [{<shift>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>} {<2>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'WHERE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'WHERE='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHERE='> name:WHERE)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'SORT='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'SORT='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SORT='> name:SORT)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_Pound '#')}
                                {<-ne>}
                                {<0>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ <X> ($ Id.VSub_Number 1))}
                                            {<Id.Lit_Equals '='>}
                                            {(DQ <Xwhere>)}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <where>
                                      more_env: []
                                      words: [{<where>} {(DQ ($ Id.VSub_At '@'))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ ($ Id.VSub_QMark '?'))}
                                            {<-ne>}
                                            {<0>}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ControlFlow
                                          keyword: <Id.ControlFlow_Return return>
                                          arg_word: {<1>}
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _>]
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'WHERE='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'WHERE='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'WHERE='>
                                              name: WHERE
                                            )
                                          op: assign_op.Equal
                                          rhs: {(DQ ($ Id.VSub_DollarName WHERE) <' || NR == 1'>)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <shift>
                                      more_env: []
                                      words: [{<shift>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [6039 6057]
                                )
                                (IfArm
                                  keyword: <Id.KW_Elif elif>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ <X> ($ Id.VSub_Number 1))}
                                            {<Id.Lit_Equals '='>}
                                            {(DQ <Xorder>)}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ <X> ($ Id.VSub_Number 2))}
                                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                            {(DQ <Xby>)}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <echo>
                                          more_env: []
                                          words: [
                                            {<echo>}
                                            {(DQ <'Syntax error ('> ($ Id.VSub_Number 2) <')'>)}
                                          ]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_GreatAnd '1>&'>
                                              loc: (redir_loc.Fd fd:1)
                                              arg: {<2>}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <syntax>
                                          more_env: []
                                          words: [{<syntax>} {<select>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.ControlFlow
                                          keyword: <Id.ControlFlow_Return return>
                                          arg_word: {<1>}
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                                    )
                                    (command.Simple
                                      blame_tok: <shift>
                                      more_env: []
                                      words: [{<shift>} {<2>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.WhileUntil
                                      keyword: <Id.KW_While while>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {($ Id.VSub_Pound '#')}
                                                {<-gt>}
                                                {<0>}
                                                {<-a>}
                                                {(DQ ($ Id.VSub_Number 1))}
                                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                                {(DQ <union>)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      body: 
                                        (command.DoGroup
                                          left: <Id.KW_Do do>
                                          children: [
                                            (command.If
                                              if_kw: <Id.KW_If if>
                                              arms: [
                                                (IfArm
                                                  keyword: <Id.KW_If if>
                                                  cond: 
                                                    (condition.Shell
                                                      commands: [
                                                        (command.Simple
                                                          blame_tok: <Id.Lit_LBracket '['>
                                                          more_env: []
                                                          words: [
                                                            {<Id.Lit_LBracket '['>}
                                                            {(DQ <X> ($ Id.VSub_Number 1))}
                                                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                                            {(DQ <Xasc>)}
                                                            {<-a>}
                                                            {(DQ <X> ($ Id.VSub_Number 1))}
                                                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                                            {(DQ <Xdesc>)}
                                                            {<-a>}
                                                            {(DQ <X> ($ Id.VSub_Number 1))}
                                                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                                            {(DQ <Xnum>)}
                                                            {<Id.Lit_RBracket ']'>}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                    )
                                                  then_kw: <Id.KW_Then then>
                                                  action: [
                                                    (command.Simple
                                                      blame_tok: <lookup_field>
                                                      more_env: []
                                                      words: [
                                                        {<lookup_field>}
                                                        {(DQ ($ Id.VSub_Number 1))}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                    (command.AndOr
                                                      children: [
                                                        (command.Simple
                                                          blame_tok: <Id.Lit_LBracket '['>
                                                          more_env: []
                                                          words: [
                                                            {<Id.Lit_LBracket '['>}
                                                            {(DQ ($ Id.VSub_QMark '?'))}
                                                            {<-ne>}
                                                            {<0>}
                                                            {<Id.Lit_RBracket ']'>}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                        (command.Simple
                                                          blame_tok: <echo>
                                                          more_env: []
                                                          words: [
                                                            {<echo>}
                                                            {
                                                              (DQ <'Bad field name ('> 
                                                                ($ Id.VSub_Number 1) <')'>
                                                              )
                                                            }
                                                          ]
                                                          redirects: [
                                                            (Redir
                                                              op: <Id.Redir_GreatAnd '1>&'>
                                                              loc: (redir_loc.Fd fd:1)
                                                              arg: {<2>}
                                                            )
                                                          ]
                                                          do_fork: T
                                                        )
                                                        (command.ControlFlow
                                                          keyword: <Id.ControlFlow_Return return>
                                                          arg_word: {<1>}
                                                        )
                                                      ]
                                                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                                                    )
                                                    (command.AndOr
                                                      children: [
                                                        (command.Simple
                                                          blame_tok: <Id.Lit_LBracket '['>
                                                          more_env: []
                                                          words: [
                                                            {<Id.Lit_LBracket '['>}
                                                            {(DQ ($ Id.VSub_DollarName SORT))}
                                                            {<Id.Lit_Equals '='>}
                                                            {(DQ )}
                                                            {<Id.Lit_RBracket ']'>}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                        (command.ShAssignment
                                                          left: <Id.Lit_VarLike 'SORT='>
                                                          pairs: [
                                                            (AssignPair
                                                              left: <Id.Lit_VarLike 'SORT='>
                                                              lhs: 
                                                                (sh_lhs_expr.Name
                                                                  left: <Id.Lit_VarLike 'SORT='>
                                                                  name: SORT
                                                                )
                                                              op: assign_op.Equal
                                                              rhs: 
                                                                {
                                                                  (DQ <'sort -t'> 
                                                                    (word_part.EscapedLiteral
                                                                      token: 
                                                                        <Id.Lit_EscapedChar '\\"'>
                                                                      ch: '"'
                                                                    ) <'\t'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' '>
                                                                  )
                                                                }
                                                            )
                                                          ]
                                                          redirects: []
                                                        )
                                                      ]
                                                      ops: [<Id.Op_DAmp _>]
                                                    )
                                                    (command.ShAssignment
                                                      left: <Id.Lit_VarLike 'SORTL='>
                                                      pairs: [
                                                        (AssignPair
                                                          left: <Id.Lit_VarLike 'SORTL='>
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike 'SORTL='>
                                                              name: SORTL
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ 
                                                                (CommandSub
                                                                  left_token: <Id.Left_Backtick '`'>
                                                                  child: 
                                                                    (command.Simple
                                                                      blame_tok: <expr>
                                                                      more_env: []
                                                                      words: [
                                                                        {<expr>}
                                                                        {
                                                                          ($ Id.VSub_DollarName 
OUTFIELDNUM
                                                                          )
                                                                        }
                                                                        {<->}
                                                                        {<1>}
                                                                      ]
                                                                      redirects: []
                                                                      do_fork: T
                                                                    )
                                                                  right: <Id.Backtick_Right '`'>
                                                                )
                                                              )
                                                            }
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                    (command.ShAssignment
                                                      left: <Id.Lit_VarLike 'SORT='>
                                                      pairs: [
                                                        (AssignPair
                                                          left: <Id.Lit_VarLike 'SORT='>
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike 'SORT='>
                                                              name: SORT
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ ($ Id.VSub_DollarName SORT) <' +'> 
                                                                ($ Id.VSub_DollarName SORTL)
                                                              )
                                                            }
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                    (command.AndOr
                                                      children: [
                                                        (command.Simple
                                                          blame_tok: <Id.Lit_LBracket '['>
                                                          more_env: []
                                                          words: [
                                                            {<Id.Lit_LBracket '['>}
                                                            {(DQ <X> ($ Id.VSub_Number 2))}
                                                            {<Id.Lit_Equals '='>}
                                                            {(DQ <Xnum>)}
                                                            {<Id.Lit_RBracket ']'>}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                        (command.ShAssignment
                                                          left: <Id.Lit_VarLike 'SORT='>
                                                          pairs: [
                                                            (AssignPair
                                                              left: <Id.Lit_VarLike 'SORT='>
                                                              lhs: 
                                                                (sh_lhs_expr.Name
                                                                  left: <Id.Lit_VarLike 'SORT='>
                                                                  name: SORT
                                                                )
                                                              op: assign_op.Equal
                                                              rhs: {(DQ (${ Id.VSub_Name SORT) <n>)}
                                                            )
                                                          ]
                                                          redirects: []
                                                        )
                                                      ]
                                                      ops: [<Id.Op_DAmp _>]
                                                    )
                                                    (command.AndOr
                                                      children: [
                                                        (command.Simple
                                                          blame_tok: <Id.Lit_LBracket '['>
                                                          more_env: []
                                                          words: [
                                                            {<Id.Lit_LBracket '['>}
                                                            {(DQ <X> ($ Id.VSub_Number 2))}
                                                            {<Id.Lit_Equals '='>}
                                                            {(DQ <Xdesc>)}
                                                            {<Id.Lit_RBracket ']'>}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                        (command.ShAssignment
                                                          left: <Id.Lit_VarLike 'SORT='>
                                                          pairs: [
                                                            (AssignPair
                                                              left: <Id.Lit_VarLike 'SORT='>
                                                              lhs: 
                                                                (sh_lhs_expr.Name
                                                                  left: <Id.Lit_VarLike 'SORT='>
                                                                  name: SORT
                                                                )
                                                              op: assign_op.Equal
                                                              rhs: {(DQ (${ Id.VSub_Name SORT) <r>)}
                                                            )
                                                          ]
                                                          redirects: []
                                                        )
                                                      ]
                                                      ops: [<Id.Op_DAmp _>]
                                                    )
                                                    (command.AndOr
                                                      children: [
                                                        (command.Simple
                                                          blame_tok: <Id.Lit_LBracket '['>
                                                          more_env: []
                                                          words: [
                                                            {<Id.Lit_LBracket '['>}
                                                            {(DQ <X> ($ Id.VSub_Number 3))}
                                                            {<Id.Lit_Equals '='>}
                                                            {(DQ <Xdesc>)}
                                                            {<Id.Lit_RBracket ']'>}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                        (command.ShAssignment
                                                          left: <Id.Lit_VarLike 'SORT='>
                                                          pairs: [
                                                            (AssignPair
                                                              left: <Id.Lit_VarLike 'SORT='>
                                                              lhs: 
                                                                (sh_lhs_expr.Name
                                                                  left: <Id.Lit_VarLike 'SORT='>
                                                                  name: SORT
                                                                )
                                                              op: assign_op.Equal
                                                              rhs: {(DQ (${ Id.VSub_Name SORT) <r>)}
                                                            )
                                                          ]
                                                          redirects: []
                                                        )
                                                      ]
                                                      ops: [<Id.Op_DAmp _>]
                                                    )
                                                    (command.ShAssignment
                                                      left: <Id.Lit_VarLike 'SORT='>
                                                      pairs: [
                                                        (AssignPair
                                                          left: <Id.Lit_VarLike 'SORT='>
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike 'SORT='>
                                                              name: SORT
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: 
                                                            {
                                                              (DQ ($ Id.VSub_DollarName SORT) <' -'> 
                                                                ($ Id.VSub_DollarName OUTFIELDNUM)
                                                              )
                                                            }
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                  ]
                                                  spids: [6197 6249]
                                                )
                                              ]
                                              else_action: []
                                              fi_kw: <Id.KW_Fi fi>
                                              redirects: []
                                            )
                                            (command.Simple
                                              blame_tok: <shift>
                                              more_env: []
                                              words: [{<shift>}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          right: <Id.KW_Done done>
                                        )
                                      redirects: []
                                    )
                                  ]
                                  spids: [6097 6115]
                                )
                                (IfArm
                                  keyword: <Id.KW_Elif elif>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ <X> ($ Id.VSub_Number 1))}
                                            {<Id.Lit_Equals '='>}
                                            {(DQ <Xunion>)}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <shift>
                                      more_env: []
                                      words: [{<shift>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'UNION='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'UNION='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'UNION='>
                                              name: UNION
                                            )
                                          op: assign_op.Equal
                                          rhs: {(DQ <Y>)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Break break>
                                    )
                                  ]
                                  spids: [6445 6463]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.Simple
                                  blame_tok: <shift>
                                  more_env: []
                                  words: [{<shift>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ ($ Id.VSub_DollarName INAGG))}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'WHERE='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'WHERE='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHERE='> name:WHERE)
                              op: assign_op.Equal
                              rhs: {(DQ <'NR == 1'>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ ($ Id.VSub_DollarName DISTINCT))}
                                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                    {(DQ )}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ ($ Id.VSub_DollarName SORT))}
                                            {<Id.Lit_Equals '='>}
                                            {(DQ )}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'DIST='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'DIST='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'DIST='>
                                              name: DIST
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ <'sort | uniq | tee /tmp/'> ($ Id.VSub_Dollar '$') 
                                                <row>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [6525 6541]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'DIST='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'DIST='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIST='> name:DIST)
                                      op: assign_op.Equal
                                      rhs: {(DQ <'uniq | tee /tmp/'> ($ Id.VSub_Dollar '$') <row>)}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [6505 6523]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'DIST='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'DIST='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DIST='> name:DIST)
                              op: assign_op.Equal
                              rhs: {(DQ <cat>)}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'TABLEFILE='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'TABLEFILE='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TABLEFILE='> name:TABLEFILE)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName TABLE) <'~'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ ($ Id.VSub_DollarName SORT))}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {(DQ )}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Pipeline
                          children: [
                            (command.Simple
                              blame_tok: <cat>
                              more_env: []
                              words: [{<cat>} {($ Id.VSub_DollarName TABLE) <Id.Lit_TildeLike '~'>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [{<eval>} {(DQ ($ Id.VSub_DollarName SORT))}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_Pipe _>]
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'TABLEFILE='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'TABLEFILE='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'TABLEFILE='>
                                  name: TABLEFILE
                                )
                              op: assign_op.Equal
                              rhs: {(DQ <'/tmp/'> ($ Id.VSub_Dollar '$'))}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ ($ Id.VSub_DollarName SUBSELECT))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <Id.VSub_DollarName '$AWK'>
                                  more_env: []
                                  words: [
                                    {($ Id.VSub_DollarName AWK)}
                                    {<-F> (DQ <'\t'>)}
                                    {
                                      (DQ ($ Id.VSub_DollarName WHERE) <' {printf '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\"'>
                                          ch: '"'
                                        ) ($ Id.VSub_DollarName PRINTF) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <', '> 
                                        ($ Id.VSub_DollarName FIELDS) <' }'>
                                      )
                                    }
                                    {($ Id.VSub_DollarName TABLEFILE)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <eval>
                                  more_env: []
                                  words: [{<eval>} {(DQ ($ Id.VSub_DollarName DIST))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          ]
                          spids: [6629 6640]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.AndOr
                          children: [
                            (command.Pipeline
                              children: [
                                (command.If
                                  if_kw: <Id.KW_If if>
                                  arms: [
                                    (IfArm
                                      keyword: <Id.KW_If if>
                                      cond: 
                                        (condition.Shell
                                          commands: [
                                            (command.Simple
                                              blame_tok: <Id.Lit_LBracket '['>
                                              more_env: []
                                              words: [
                                                {<Id.Lit_LBracket '['>}
                                                {<Id.KW_Bang '!'>}
                                                {(DQ ($ Id.VSub_DollarName QUIET))}
                                                {<-o>}
                                                {(DQ ($ Id.VSub_DollarName INAGG))}
                                                {<Id.Lit_Equals '='>}
                                                {(DQ <Y>)}
                                                {<Id.Lit_RBracket ']'>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Subshell
                                          left: <Id.Op_LParen _>
                                          child: 
                                            (command.CommandList
                                              children: [
                                                (command.Sentence
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <set>
                                                      more_env: []
                                                      words: [
                                                        {<set>}
                                                        {<X>}
                                                        {
                                                          (CommandSub
                                                            left_token: <Id.Left_Backtick '`'>
                                                            child: 
                                                              (command.Simple
                                                                blame_tok: <cut>
                                                                more_env: []
                                                                words: [
                                                                  {<cut>}
                                                                  {<-d> 
                                                                    (word_part.EscapedLiteral
                                                                      token: 
                                                                        <Id.Lit_EscapedChar '\\\t'>
                                                                      ch: '\t'
                                                                    )
                                                                  }
                                                                  {<-f1>}
                                                                  {($ Id.VSub_DollarName TABLE) 
                                                                    <Id.Lit_At '@'>
                                                                  }
                                                                ]
                                                                redirects: []
                                                                do_fork: T
                                                              )
                                                            right: <Id.Backtick_Right '`'>
                                                          )
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                                (command.Simple
                                                  blame_tok: <shift>
                                                  more_env: []
                                                  words: [{<shift>}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Sentence
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <echo>
                                                      more_env: []
                                                      words: [
                                                        {<echo>}
                                                        {($ Id.VSub_DollarName NOCR1)}
                                                        {
                                                          (DQ <-> ($ Id.VSub_Number 1) <-> 
                                                            ($ Id.VSub_DollarName NOCR2)
                                                          )
                                                        }
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                                (command.Simple
                                                  blame_tok: <shift>
                                                  more_env: []
                                                  words: [{<shift>}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Sentence
                                                  child: 
                                                    (command.ForEach
                                                      keyword: <Id.KW_For for>
                                                      iter_names: [HEADING]
                                                      iterable: (for_iter__Args)
                                                      body: 
                                                        (command.DoGroup
                                                          left: <Id.KW_Do do>
                                                          children: [
                                                            (command.Simple
                                                              blame_tok: <echo>
                                                              more_env: []
                                                              words: [
                                                                {<echo>}
                                                                {($ Id.VSub_DollarName NOCR1)}
                                                                {
                                                                  (DQ ($ Id.VSub_DollarName TAB) <-> 
                                                                    ($ Id.VSub_DollarName HEADING) <-> ($ Id.VSub_DollarName NOCR2)
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          ]
                                                          right: <Id.KW_Done done>
                                                        )
                                                      redirects: []
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                                (command.Simple
                                                  blame_tok: <echo>
                                                  more_env: []
                                                  words: [{<echo>} {(DQ )}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                            )
                                          right: <Id.Right_Subshell _>
                                          redirects: []
                                        )
                                      ]
                                      spids: [6674 6699]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <Id.VSub_DollarName '$AWK'>
                                  more_env: []
                                  words: [
                                    {($ Id.VSub_DollarName AWK)}
                                    {<-F> (DQ <'\t'>)}
                                    {
                                      (DQ ($ Id.VSub_DollarName WHERE) <' { cnt += 1 ; printf '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\"'>
                                          ch: '"'
                                        ) ($ Id.VSub_DollarName PRINTF) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <n> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\"'>
                                          ch: '"'
                                        ) <', '> ($ Id.VSub_DollarName FIELDS) <' }\n'> <'\t\t\tEND\t{ printf '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\"'>
                                          ch: '"'
                                        ) <'( %1d rows)'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <n> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\"'>
                                          ch: '"'
                                        ) <', (cnt - 1) '> <'\t\t\t>'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                        <'/tmp/'> ($ Id.VSub_Dollar '$') <row> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' }'>
                                      )
                                    }
                                    {<->}
                                    {($ Id.VSub_DollarName TABLEFILE)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <eval>
                                  more_env: []
                                  words: [{<eval>} {(DQ ($ Id.VSub_DollarName DIST))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {(DQ ($ Id.VSub_DollarName DISTINCT))}
                                            {<Id.Lit_Equals '='>}
                                            {(DQ )}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <cat>
                                      more_env: []
                                      words: [{<cat>} {<'/tmp/'> ($ Id.VSub_Dollar '$') <row>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [6841 6857]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'X='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'X='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'X='> name:X)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_Backtick '`'>
                                            child: 
                                              (command.Simple
                                                blame_tok: <expr>
                                                more_env: []
                                                words: [
                                                  {<expr>}
                                                  {
                                                    (CommandSub
                                                      left_token: <Id.Left_Backtick '`'>
                                                      child: 
                                                        (command.Pipeline
                                                          children: [
                                                            (command.Simple
                                                              blame_tok: <cat>
                                                              more_env: []
                                                              words: [
                                                                {<cat>}
                                                                {<'/tmp/'> ($ Id.VSub_Dollar '$') 
                                                                  <row>
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                            (command.Simple
                                                              blame_tok: <wc>
                                                              more_env: []
                                                              words: [{<wc>} {<-l>}]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          ]
                                                          ops: [<Id.Op_Pipe _>]
                                                        )
                                                      right: <Id.Backtick_Right '`'>
                                                    )
                                                  }
                                                  {<->}
                                                  {<1>}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Backtick_Right '`'>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(SQ <'('>) ($ Id.VSub_DollarName X) (SQ <' rows)'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<0>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Simple
              blame_tok: <Id.Lit_Colon ':'>
              more_env: []
              words: [{<Id.Lit_Colon ':'>}]
              redirects: []
              do_fork: T
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <Id.Lit_Colon ':'>
                      more_env: []
                      words: [{<Id.Lit_Colon ':'>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {($ Id.VSub_DollarName NOCR1)}
                        {(DQ <'* '> ($ Id.VSub_DollarName NOCR2))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<LINE>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Exit exit>
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'SQLPART='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'SQLPART='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SQLPART='> name:SQLPART)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_Backtick '`'>
                                  child: 
                                    (command.Simple
                                      blame_tok: <expr>
                                      more_env: []
                                      words: [
                                        {<expr>}
                                        {(DQ ($ Id.VSub_DollarName LINE))}
                                        {<Id.Lit_Colon ':'>}
                                        {(SQ <'\\(..*\\)/.$'>)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Backtick_Right '`'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ ($ Id.VSub_DollarName SQLPART))}
                                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                    {(DQ )}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ ($ Id.VSub_DollarName NEW))}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <Y>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_CMD='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_CMD='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_CMD='> name:_CMD)
                                      op: assign_op.Equal
                                      rhs: {(DQ )}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.If
                              if_kw: <Id.KW_If if>
                              arms: [
                                (IfArm
                                  keyword: <Id.KW_If if>
                                  cond: 
                                    (condition.Shell
                                      commands: [
                                        (command.Simple
                                          blame_tok: <Id.Lit_LBracket '['>
                                          more_env: []
                                          words: [
                                            {<Id.Lit_LBracket '['>}
                                            {
                                              (DQ 
                                                (CommandSub
                                                  left_token: <Id.Left_Backtick '`'>
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <expr>
                                                      more_env: []
                                                      words: [
                                                        {<expr>}
                                                        {(DQ ($ Id.VSub_DollarName LINE))}
                                                        {<Id.Lit_Colon ':'>}
                                                        {(SQ <'.*/p/g$'>)}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  right: <Id.Backtick_Right '`'>
                                                )
                                              )
                                            }
                                            {<-ne>}
                                            {<0>}
                                            {<Id.Lit_RBracket ']'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike '_CMD='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike '_CMD='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike '_CMD='>
                                              name: _CMD
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {(DQ ($ Id.VSub_DollarName _CMD)) 
                                              (CommandSub
                                                left_token: <Id.Left_Backtick '`'>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <expr>
                                                    more_env: []
                                                    words: [
                                                      {<expr>}
                                                      {(DQ ($ Id.VSub_DollarName LINE))}
                                                      {<Id.Lit_Colon ':'>}
                                                      {(SQ <'\\(.*\\)/p/g$'>)}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                right: <Id.Backtick_Right '`'>
                                              ) (DQ ($ Id.VSub_DollarName NL))
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'LINE='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'LINE='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'LINE='>
                                              name: LINE
                                            )
                                          op: assign_op.Equal
                                          rhs: {(DQ <'/p/g'>)}
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'NEW='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'NEW='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'NEW='>
                                              name: NEW
                                            )
                                          op: assign_op.Equal
                                          rhs: {(DQ )}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [7039 7068]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_CMD='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_CMD='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_CMD='> name:_CMD)
                                      op: assign_op.Equal
                                      rhs: 
                                        {(DQ ($ Id.VSub_DollarName _CMD)) 
                                          (DQ ($ Id.VSub_DollarName SQLPART)) (DQ ($ Id.VSub_DollarName NL))
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'LINE='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'LINE='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LINE='> name:LINE)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_Backtick '`'>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <expr>
                                                  more_env: []
                                                  words: [
                                                    {<expr>}
                                                    {(DQ ($ Id.VSub_DollarName LINE))}
                                                    {<Id.Lit_Colon ':'>}
                                                    {(SQ <'.*\\(/.\\)$'>)}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Backtick_Right '`'>
                                            )
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'NEW='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'NEW='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NEW='> name:NEW)
                                      op: assign_op.Equal
                                      rhs: {(DQ )}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          spids: [6998 7015]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName LINE))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <'/p'>
                          pattern: (pat.Words words:[{<'/p'>} {<p>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ ($ Id.VSub_DollarName _CMD))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <'/g'>
                          pattern: (pat.Words words:[{<'/g'>} {<g>}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <'/p/g'>
                          pattern: (pat.Words words:[{<'/p/g'>} {<pg>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName _CMD))}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <'/r'>
                          pattern: (pat.Words words:[{<'/r'>} {<r>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ <reset>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_CMD='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_CMD='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_CMD='> name:_CMD)
                                  op: assign_op.Equal
                                  rhs: {(DQ )}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <'/s'>
                          pattern: (pat.Words words:[{<'/s'>} {<s>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <umask>
                                  more_env: []
                                  words: [{<umask>} {($ Id.VSub_DollarName UMASK)}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <Id.VSub_DollarName '$SHELL'>
                                  more_env: []
                                  words: [{($ Id.VSub_DollarName SHELL)}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              blame_tok: <umask>
                              more_env: []
                              words: [{<umask>} {<0000>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <'/e'>
                          pattern: (pat.Words words:[{<'/e'>} {<e>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <umask>
                                  more_env: []
                                  words: [{<umask>} {($ Id.VSub_DollarName UMASK)}]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {(DQ ($ Id.VSub_DollarName _CMD))}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Sentence
                              child: 
                                (command.Simple
                                  blame_tok: <Id.VSub_DollarName '$EDITOR'>
                                  more_env: []
                                  words: [
                                    {($ Id.VSub_DollarName EDITOR)}
                                    {<'/tmp/'> ($ Id.VSub_Dollar '$')}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              terminator: <Id.Op_Semi _>
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_CMD='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_CMD='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_CMD='> name:_CMD)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_Backtick '`'>
                                          child: 
                                            (command.Simple
                                              blame_tok: <cat>
                                              more_env: []
                                              words: [{<cat>} {<'/tmp/'> ($ Id.VSub_Dollar '$')}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Backtick_Right '`'>
                                        )
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <umask>
                              more_env: []
                              words: [{<umask>} {<0000>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <'/i'>
                          pattern: (pat.Words words:[{<'/i'>} {<i>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {($ Id.VSub_DollarName NOCR1)}
                                {(DQ <'Enter include file: '> ($ Id.VSub_DollarName NOCR2))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <read>
                              more_env: []
                              words: [{<read>} {<LINE>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-f>}
                                    {(DQ ($ Id.VSub_DollarName LINE))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_CMD='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_CMD='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_CMD='> name:_CMD)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ ($ Id.VSub_DollarName _CMD) 
                                            (CommandSub
                                              left_token: <Id.Left_Backtick '`'>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <cat>
                                                  more_env: []
                                                  words: [{<cat>} {($ Id.VSub_DollarName LINE)}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Backtick_Right '`'>
                                            ) ($ Id.VSub_DollarName NL)
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName LINE) <' included'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <'/w'>
                          pattern: (pat.Words words:[{<'/w'>} {<w>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {($ Id.VSub_DollarName NOCR1)}
                                {(DQ <'Enter output file: '> ($ Id.VSub_DollarName NOCR2))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <read>
                              more_env: []
                              words: [{<read>} {<LINE>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ ($ Id.VSub_DollarName LINE))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <umask>
                                  more_env: []
                                  words: [{<umask>} {($ Id.VSub_DollarName UMASK)}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName _CMD))}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {(DQ ($ Id.VSub_DollarName LINE))}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <umask>
                                  more_env: []
                                  words: [{<umask>} {<0000>}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <echo>
                                  more_env: []
                                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName LINE) <' written'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <'/q'>
                          pattern: (pat.Words words:[{<'/q'>} {<q>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<0>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_EscapedChar '\\#'>
                          pattern: 
                            (pat.Words
                              words: [
                                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\#'> ch:'#') 
                                  <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ ($ Id.VSub_DollarName NEW))}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <Y>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_CMD='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_CMD='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_CMD='> name:_CMD)
                                      op: assign_op.Equal
                                      rhs: {(DQ )}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ ($ Id.VSub_DollarName NEW))}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <Y>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike '_CMD='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike '_CMD='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_CMD='> name:_CMD)
                                      op: assign_op.Equal
                                      rhs: {(DQ )}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike '_CMD='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike '_CMD='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_CMD='> name:_CMD)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName _CMD) ($ Id.VSub_DollarName LINE) 
                                        ($ Id.VSub_DollarName NL)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'NEW='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'NEW='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NEW='> name:NEW)
                          op: assign_op.Equal
                          rhs: {(DQ )}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'CMD='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'CMD='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CMD='> name:CMD)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <echo>
                                more_env: []
                                words: [{<echo>} {(DQ ($ Id.VSub_DollarName _CMD))}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <sed>
                                more_env: []
                                words: [
                                  {<sed>}
                                  {<-e>}
                                  {
                                    (DQ <'s/'> <Id.Lit_BadBackslash '\\'> <'\'/'> 
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\"'>
                                        ch: '"'
                                      ) <'/g'>
                                    )
                                  }
                                  {<-e>}
                                  {(SQ <'s/\\"\\([^\\"]*\\)\\"/\\"\\\\"\\1\\\\"\\"/g'>)}
                                  {<-e>}
                                  {(SQ <'s/\\([<>!=][<>!=]*\\)/ \\1 /g'>)}
                                  {<-e>}
                                  {(SQ <'s/</\\\\</g'>)}
                                  {<-e>}
                                  {(SQ <'s/>/\\\\>/g'>)}
                                  {<-e>}
                                  {(SQ <'s/\\*/\\\\*/g'>)}
                                  {<-e>}
                                  {(SQ <'s/(/ \\\\( /g'>)}
                                  {<-e>}
                                  {(SQ <'s/)/ \\\\) /g'>)}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<Id.KW_Bang '!'>}
                    {(DQ ($ Id.VSub_DollarName CMD))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (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: {(DQ ($ Id.VSub_DollarName _IFS) <','>)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [{<eval>} {<set>} {<X>} {($ Id.VSub_DollarName CMD)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (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: {(DQ ($ Id.VSub_DollarName _IFS))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'NEW='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'NEW='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NEW='> name:NEW)
                  op: assign_op.Equal
                  rhs: {(DQ <Y>)}
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <select>
                  pattern: (pat.Words words:[{<select>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <select_>
                      more_env: []
                      words: [{<select_>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <create>
                  pattern: (pat.Words words:[{<create>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <create>
                      more_env: []
                      words: [{<create>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <delete>
                  pattern: (pat.Words words:[{<delete>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <delete>
                      more_env: []
                      words: [{<delete>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <drop>
                  pattern: (pat.Words words:[{<drop>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <drop>
                      more_env: []
                      words: [{<drop>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <insert>
                  pattern: (pat.Words words:[{<insert>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <insert>
                      more_env: []
                      words: [{<insert>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <update>
                  pattern: (pat.Words words:[{<update>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <update>
                      more_env: []
                      words: [{<update>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <edit>
                  pattern: (pat.Words words:[{<edit>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Lit_LBracket '['>
                          more_env: []
                          words: [
                            {<Id.Lit_LBracket '['>}
                            {(DQ ($ Id.VSub_Number 2))}
                            {<Id.Lit_RBracket ']'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <Id.VSub_DollarName '$EDITOR'>
                          more_env: []
                          words: [
                            {($ Id.VSub_DollarName EDITOR)}
                            {($ Id.VSub_Number 2) <Id.Lit_At '@'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <help>
                  pattern: (pat.Words words:[{<help>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <help>
                      more_env: []
                      words: [{<help>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <print>
                  pattern: (pat.Words words:[{<print>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <select_>
                      more_env: []
                      words: [
                        {<select_>}
                        {(DQ <select>)}
                        {(SQ <'*'>)}
                        {(DQ <from>)}
                        {(DQ ($ Id.VSub_Number 2))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  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 <'Missing or unrecognized command.'>)}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<2>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
  ]
)