(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'FAILED='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'FAILED='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
          op: assign_op.Equal
          rhs: {<no>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'WORKDIR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'WORKDIR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WORKDIR='> name:WORKDIR)
          op: assign_op.Equal
          rhs: {<work>}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <usage>
      name: usage
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'Usage: conflicts.sh [-s script] [-w workdir]'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'COMMAND='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'COMMAND='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMMAND='> name:COMMAND)
          op: assign_op.Equal
          rhs: {<etcupdate>}
        )
      ]
      redirects: []
    )
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: 
        (condition.Shell
          commands: [
            (command.Sentence
              child: 
                (command.Simple
                  blame_tok: <getopts>
                  more_env: []
                  words: [{<getopts>} {(DQ <'s:w:'>)} {<option>}]
                  redirects: []
                  do_fork: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
        )
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName option)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <s>
                  pattern: (pat.Words words:[{<s>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'COMMAND='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'COMMAND='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'COMMAND='> name:COMMAND)
                          op: assign_op.Equal
                          rhs: {(DQ <'sh '> ($ Id.VSub_DollarName OPTARG))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <w>
                  pattern: (pat.Words words:[{<w>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'WORKDIR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'WORKDIR='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WORKDIR='> name:WORKDIR)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName OPTARG)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  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>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <usage>
                      more_env: []
                      words: [{<usage>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.Simple
      blame_tok: <shift>
      more_env: []
      words: [
        {<shift>}
        {
          (word_part.ArithSub
            left: <Id.Left_DollarDParen '$(('>
            anode: 
              (arith_expr.Binary
                op_id: Id.Arith_Minus
                left: ($ Id.Lit_ArithVarLike OPTIND)
                right: {<Id.Lit_Digits 1>}
              )
            right: <Id.Right_DollarDParen _>
          )
        }
      ]
      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.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_Pound '#')}
                        {<-ne>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <usage>
              more_env: []
              words: [{<usage>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [197 210]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'CONFLICTS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'CONFLICTS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CONFLICTS='> name:CONFLICTS)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName WORKDIR) <'/conflicts'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'OLD='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'OLD='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OLD='> name:OLD)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName WORKDIR) <'/old'>}
        )
      ]
      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: {($ Id.VSub_DollarName WORKDIR) <'/current'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'TEST='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'TEST='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEST='> name:TEST)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName WORKDIR) <'/test'>}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <build_login_conflict>
      name: build_login_conflict
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [
                {<rm>}
                {<-rf>}
                {($ Id.VSub_DollarName OLD)}
                {($ Id.VSub_DollarName NEW)}
                {($ Id.VSub_DollarName TEST)}
                {($ Id.VSub_DollarName CONFLICTS)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [
                {<mkdir>}
                {<-p>}
                {($ Id.VSub_DollarName OLD) <'/etc'>}
                {($ Id.VSub_DollarName NEW) <'/etc'>}
                {($ Id.VSub_DollarName TEST) <'/etc'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName OLD) <'/etc/login.conf'>}
                )
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'default:'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\\\'>
                          ch: '\\'
                        )
                        <'\n'>
                        <'\t:passwd_format=md5:\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName NEW) <'/etc/login.conf'>}
                )
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'default:'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\\\'>
                          ch: '\\'
                        )
                        <'\n'>
                        <'\t:passwd_format=md5:'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\\\'>
                          ch: '\\'
                        )
                        <'\n'>
                        <'\t:copyright=/etc/COPYRIGHT\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName TEST) <'/etc/login.conf'>}
                )
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'default:'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\\\'>
                          ch: '\\'
                        )
                        <'\n'>
                        <'\t:passwd_format=md5:'>
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\\\'>
                          ch: '\\'
                        )
                        <'\n'>
                        <'        :welcome=/etc/motd:\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <Id.VSub_DollarName '$COMMAND'>
              more_env: []
              words: [
                {($ Id.VSub_DollarName COMMAND)}
                {<-r>}
                {<-d>}
                {($ Id.VSub_DollarName WORKDIR)}
                {<-D>}
                {($ Id.VSub_DollarName TEST)}
              ]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <build_aliases_conflict>
      name: build_aliases_conflict
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [
                {<rm>}
                {<-rf>}
                {($ Id.VSub_DollarName OLD)}
                {($ Id.VSub_DollarName NEW)}
                {($ Id.VSub_DollarName TEST)}
                {($ Id.VSub_DollarName CONFLICTS)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [
                {<mkdir>}
                {<-p>}
                {($ Id.VSub_DollarName OLD) <'/etc/mail'>}
                {($ Id.VSub_DollarName NEW) <'/etc/mail'>}
                {($ Id.VSub_DollarName TEST) <'/etc/mail'>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName OLD) <'/etc/mail/aliases'>}
                )
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'# root: me@my.domain\n'>
                        <'\n'>
                        <'# Basic system aliases -- these MUST be present\n'>
                        <'MAILER-DAEMON: postmaster\n'>
                        <'postmaster: root\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName NEW) <'/etc/mail/aliases'>}
                )
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'# root: me@my.domain\n'>
                        <'\n'>
                        <'# Basic system aliases -- these MUST be present\n'>
                        <'MAILER-DAEMON: postmaster\n'>
                        <'postmaster: root\n'>
                        <'\n'>
                        <'# General redirections for pseudo accounts\n'>
                        <'_dhcp:  root\n'>
                        <'_pflogd: root\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {($ Id.VSub_DollarName TEST) <'/etc/mail/aliases'>}
                )
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'root: someone@example.com\n'>
                        <'\n'>
                        <'# Basic system aliases -- these MUST be present\n'>
                        <'MAILER-DAEMON: postmaster\n'>
                        <'postmaster: foo\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <Id.VSub_DollarName '$COMMAND'>
              more_env: []
              words: [
                {($ Id.VSub_DollarName COMMAND)}
                {<-r>}
                {<-d>}
                {($ Id.VSub_DollarName WORKDIR)}
                {<-D>}
                {($ Id.VSub_DollarName TEST)}
              ]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <missing>
      name: missing
      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.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-e>}
                                {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)}
                                {<-o>}
                                {<-L>}
                                {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'File '> ($ Id.VSub_Number 1) <' should be missing'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'FAILED='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'FAILED='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                          op: assign_op.Equal
                          rhs: {<yes>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [494 515]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <present>
      name: present
      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.Sentence
                          child: 
                            (command.Pipeline
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-e>}
                                    {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)}
                                    {<-o>}
                                    {<-L>}
                                    {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'File '> ($ Id.VSub_Number 1) <' should be present'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'FAILED='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'FAILED='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                          op: assign_op.Equal
                          rhs: {<yes>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [546 569]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <file>
      name: file
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<contents>} {<sum>}]
              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
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-f>}
                                    {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {(DQ <'File '> ($ Id.VSub_Number 1) <' should be a regular file'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'FAILED='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'FAILED='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                          op: assign_op.Equal
                          rhs: {<yes>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [614 629]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_Pound '#')}
                                {<-eq>}
                                {<2>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'contents='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'contents='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'contents='> name:contents)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <cat>
                                    more_env: []
                                    words: [
                                      {<cat>}
                                      {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)}
                                    ]
                                    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.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ ($ Id.VSub_DollarName contents))}
                                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                        {(DQ ($ Id.VSub_Number 2))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {(DQ <'File '> ($ Id.VSub_Number 1) <' has wrong contents'>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'FAILED='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'FAILED='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [673 691]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [645 658]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_Pound '#')}
                                {<-eq>}
                                {<3>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'sum='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'sum='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sum='> name:sum)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <md5>
                                    more_env: []
                                    words: [
                                      {<md5>}
                                      {<-q>}
                                      {($ Id.VSub_DollarName TEST) <'/'> ($ Id.VSub_Number 1)}
                                    ]
                                    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.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ ($ Id.VSub_DollarName sum))}
                                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                        {(DQ ($ Id.VSub_Number 3))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {(DQ <'File '> ($ Id.VSub_Number 1) <' has wrong contents'>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'FAILED='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'FAILED='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [740 758]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [710 723]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <conflict>
      name: conflict
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <local>
              more_env: []
              words: [{<local>} {<sum>}]
              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
                              negated: <Id.KW_Bang '!'>
                              children: [
                                (command.Simple
                                  blame_tok: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-f>}
                                    {($ Id.VSub_DollarName CONFLICTS) <'/'> ($ Id.VSub_Number 1)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: []
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'File '> ($ Id.VSub_Number 1) <' missing conflict'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'FAILED='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'FAILED='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                          op: assign_op.Equal
                          rhs: {<yes>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [801 816]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (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
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'sum='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'sum='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sum='> name:sum)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Simple
                                    blame_tok: <md5>
                                    more_env: []
                                    words: [
                                      {<md5>}
                                      {<-q>}
                                      {($ Id.VSub_DollarName CONFLICTS) <'/'> ($ Id.VSub_Number 1)}
                                    ]
                                    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.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {(DQ ($ Id.VSub_DollarName sum))}
                                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                        {(DQ ($ Id.VSub_Number 2))}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {(DQ <'Conflict '> ($ Id.VSub_Number 1) <' has wrong contents'>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'FAILED='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'FAILED='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                                  op: assign_op.Equal
                                  rhs: {<yes>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [862 880]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [832 845]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <resolved>
      name: resolved
      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.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-f>}
                                {($ Id.VSub_DollarName CONFLICTS) <'/'> ($ Id.VSub_Number 1)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Conflict '> ($ Id.VSub_Number 1) <' should be resolved'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'FAILED='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'FAILED='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                          op: assign_op.Equal
                          rhs: {<yes>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [914 927]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {
                          (CommandSub
                            left_token: <Id.Left_Backtick '`'>
                            child: 
                              (command.Simple
                                blame_tok: <id>
                                more_env: []
                                words: [{<id>} {<-u>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Backtick_Right '`'>
                          )
                        }
                        {<-ne>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'must be root'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [948 967]
        )
      ]
      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.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<-r>}
                        {<'/etc/etcupdate.conf'>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'WARNING: /etc/etcupdate.conf settings may break some tests.'>)}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [984 995]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <build_login_conflict>
      more_env: []
      words: [{<build_login_conflict>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Checking \'p\':'>)}]
      redirects: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(SQ <p>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$COMMAND'>
          more_env: []
          words: [
            {($ Id.VSub_DollarName COMMAND)}
            {<resolve>}
            {<-d>}
            {($ Id.VSub_DollarName WORKDIR)}
            {<-D>}
            {($ Id.VSub_DollarName TEST)}
          ]
          redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _>]
    )
    (command.Simple
      blame_tok: <file>
      more_env: []
      words: [{<file>} {<'/etc/login.conf'>} {(DQ )} {<95de92ea3f1bb1bf4f612a8b5908cddd>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <missing>
      more_env: []
      words: [{<missing>} {<'/etc/login.conf.db'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <conflict>
      more_env: []
      words: [{<conflict>} {<'/etc/login.conf'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Checking \'mf\':'>)}]
      redirects: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(SQ <mf>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$COMMAND'>
          more_env: []
          words: [
            {($ Id.VSub_DollarName COMMAND)}
            {<resolve>}
            {<-d>}
            {($ Id.VSub_DollarName WORKDIR)}
            {<-D>}
            {($ Id.VSub_DollarName TEST)}
          ]
          redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _>]
    )
    (command.Simple
      blame_tok: <file>
      more_env: []
      words: [{<file>} {<'/etc/login.conf'>} {(DQ )} {<95de92ea3f1bb1bf4f612a8b5908cddd>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <missing>
      more_env: []
      words: [{<missing>} {<'/etc/login.conf.db'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <resolved>
      more_env: []
      words: [{<resolved>} {<'/etc/login.conf'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <build_login_conflict>
      more_env: []
      words: [{<build_login_conflict>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Checking \'tf\':'>)}]
      redirects: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(SQ <tf>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$COMMAND'>
          more_env: []
          words: [
            {($ Id.VSub_DollarName COMMAND)}
            {<resolve>}
            {<-d>}
            {($ Id.VSub_DollarName WORKDIR)}
            {<-D>}
            {($ Id.VSub_DollarName TEST)}
          ]
          redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _>]
    )
    (command.Simple
      blame_tok: <file>
      more_env: []
      words: [{<file>} {<'/etc/login.conf'>} {(DQ )} {<7774a0f9a3a372c7c109c32fd31c4b6b>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <file>
      more_env: []
      words: [{<file>} {<'/etc/login.conf.db'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <resolved>
      more_env: []
      words: [{<resolved>} {<'/etc/login.conf'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <build_login_conflict>
      more_env: []
      words: [{<build_login_conflict>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Checking \'r\':'>)}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {($ Id.VSub_DollarName CONFLICTS) <'/etc/login.conf'>}
        )
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'default:'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\')
                <'\n'>
                <'\t:passwd_format=md5:'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\')
                <'\n'>
                <'\t:copyright=/etc/COPYRIGHT'>
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\')
                <'\n'>
                <'        :welcome=/etc/motd:\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(SQ <r>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$COMMAND'>
          more_env: []
          words: [
            {($ Id.VSub_DollarName COMMAND)}
            {<resolve>}
            {<-d>}
            {($ Id.VSub_DollarName WORKDIR)}
            {<-D>}
            {($ Id.VSub_DollarName TEST)}
          ]
          redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
          do_fork: T
        )
      ]
      ops: [<Id.Op_Pipe _>]
    )
    (command.Simple
      blame_tok: <file>
      more_env: []
      words: [{<file>} {<'/etc/login.conf'>} {(DQ )} {<966e25984b9b63da8eaac8479dcb0d4d>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <file>
      more_env: []
      words: [{<file>} {<'/etc/login.conf.db'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <resolved>
      more_env: []
      words: [{<resolved>} {<'/etc/login.conf'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <build_aliases_conflict>
      more_env: []
      words: [{<build_aliases_conflict>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Checking newalias warning for \'p\''>) <Id.Lit_Colon ':'>}]
      redirects: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(SQ <p>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$COMMAND'>
          more_env: []
          words: [
            {($ Id.VSub_DollarName COMMAND)}
            {<resolve>}
            {<-d>}
            {($ Id.VSub_DollarName WORKDIR)}
            {<-D>}
            {($ Id.VSub_DollarName TEST)}
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <grep>
          more_env: []
          words: [{<grep>} {<-q>} {<newalias>}]
          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.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_QMark '?')}
                        {<-eq>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'+ Extra warning'>)}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FAILED='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FAILED='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                  op: assign_op.Equal
                  rhs: {<yes>}
                )
              ]
              redirects: []
            )
          ]
          spids: [1294 1307]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Checking newalias warning for \'mf\''>) <Id.Lit_Colon ':'>}]
      redirects: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(SQ <mf>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$COMMAND'>
          more_env: []
          words: [
            {($ Id.VSub_DollarName COMMAND)}
            {<resolve>}
            {<-d>}
            {($ Id.VSub_DollarName WORKDIR)}
            {<-D>}
            {($ Id.VSub_DollarName TEST)}
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <grep>
          more_env: []
          words: [{<grep>} {<-q>} {<newalias>}]
          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.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_QMark '?')}
                        {<-eq>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'+ Extra warning'>)}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FAILED='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FAILED='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                  op: assign_op.Equal
                  rhs: {<yes>}
                )
              ]
              redirects: []
            )
          ]
          spids: [1357 1370]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <build_aliases_conflict>
      more_env: []
      words: [{<build_aliases_conflict>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(DQ <'Checking newalias warning for \'tf\''>) <Id.Lit_Colon ':'>}]
      redirects: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(SQ <tf>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$COMMAND'>
          more_env: []
          words: [
            {($ Id.VSub_DollarName COMMAND)}
            {<resolve>}
            {<-d>}
            {($ Id.VSub_DollarName WORKDIR)}
            {<-D>}
            {($ Id.VSub_DollarName TEST)}
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <grep>
          more_env: []
          words: [{<grep>} {<-q>} {<newalias>}]
          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.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_QMark '?')}
                        {<-ne>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'- Missing warning'>)}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FAILED='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FAILED='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                  op: assign_op.Equal
                  rhs: {<yes>}
                )
              ]
              redirects: []
            )
          ]
          spids: [1426 1439]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <build_aliases_conflict>
      more_env: []
      words: [{<build_aliases_conflict>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cp>
      more_env: []
      words: [
        {<cp>}
        {($ Id.VSub_DollarName TEST) <'/etc/mail/aliases'>}
        {($ Id.VSub_DollarName CONFLICTS) <'/etc/mail/aliases'>}
      ]
      redirects: []
      do_fork: T
    )
    (command.Pipeline
      children: [
        (command.Simple
          blame_tok: <echo>
          more_env: []
          words: [{<echo>} {(SQ <r>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <Id.VSub_DollarName '$COMMAND'>
          more_env: []
          words: [
            {($ Id.VSub_DollarName COMMAND)}
            {<resolve>}
            {<-d>}
            {($ Id.VSub_DollarName WORKDIR)}
            {<-D>}
            {($ Id.VSub_DollarName TEST)}
          ]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <grep>
          more_env: []
          words: [{<grep>} {<-q>} {<newalias>}]
          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.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_QMark '?')}
                        {<-ne>}
                        {<0>}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'- Missing warning'>)}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FAILED='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FAILED='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FAILED='> name:FAILED)
                  op: assign_op.Equal
                  rhs: {<yes>}
                )
              ]
              redirects: []
            )
          ]
          spids: [1493 1506]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <Id.Lit_LBracket '['>
      more_env: []
      words: [
        {<Id.Lit_LBracket '['>}
        {(DQ (${ Id.VSub_Name FAILED))}
        {<Id.Lit_Equals '='>}
        {<no>}
        {<Id.Lit_RBracket ']'>}
      ]
      redirects: []
      do_fork: T
    )
  ]
)