(command.CommandList
  children: [
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$EMACS'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:EMACS)
                  op: assign_op.Equal
                  rhs: {<emacs>}
                  spids: [59]
                )
              ]
            )
          ]
          spids: [43 56]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {($ Id.VSub_DollarName '$EMACS')} {<--batch>})
        (BraceGroup
          children: [
            (C {<echo>} {(DQ <'You must set EMACS to a program that runs emacs.'>)})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
        )
      ]
    )
    (command.Sentence
      child: 
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Simple
                      words: [{($ Id.VSub_DollarName '$EMACS')} {<-batch>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      do_fork: T
                    )
                )
              }
            )
            (BraceGroup
              children: [
                (C {<echo>} 
                  {
                    (DQ <'Your emacs command ('> ($ Id.VSub_DollarName '$EMACS') 
                      <') does not run properly.'>
                    )
                  }
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})
              ]
            )
          ]
        )
      terminator: <Id.Op_Semi _>
    )
    (command.Sentence
      child: 
        (command.AndOr
          ops: [Id.Op_DPipe]
          children: [
            (C 
              {
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Simple
                      words: [
                        {($ Id.VSub_DollarName '$EMACS')}
                        {<-batch>}
                        {<--eval>}
                        {(DQ <'(require \'ert)'>)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                        (redir
                          op: <Id.Redir_GreatAnd '2>&'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<1>}
                        )
                      ]
                      do_fork: T
                    )
                )
              }
            )
            (BraceGroup
              children: [
                (C {<echo>} {(SQ <'You must install the `ert` dependency; see README.md'>)})
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<3>})
              ]
            )
          ]
        )
      terminator: <Id.Op_Semi _>
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:warnings)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Pipeline
                      children: [
                        (command.Simple
                          words: [
                            {($ Id.VSub_DollarName '$EMACS')}
                            {<-Q>}
                            {<-batch>}
                            {<-f>}
                            {<batch-byte-compile>}
                            {<rust-mode.el>}
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_GreatAnd '2>&'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<1>}
                            )
                          ]
                          do_fork: T
                        )
                        (C {<grep>} {<-v>} {(SQ <'^Wrote '>)})
                      ]
                      negated: F
                    )
                )
              )
            }
          spids: [166]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$warnings'))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<echo>} {(DQ <'Byte-compilation failed:'>)})
            (C {<echo>} {(DQ ($ Id.VSub_DollarName '$warnings'))})
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<4>})
          ]
          spids: [198 211]
        )
      ]
      else_action: [(C {<echo>} {(DQ <'Byte-compilation passed.'>)})]
    )
    (C {($ Id.VSub_DollarName '$EMACS')} {<-batch>} {<-l>} {<rust-mode.el>} {<-l>} {<rust-mode-tests.el>} 
      {<-f>} {<ert-run-tests-batch-and-exit>}
    )
  ]
)