(command.CommandList
  children: [
    (C {(set)} {(-o)} {(nounset)})
    (C {(set)} {(-o)} {(pipefail)})
    (C {(set)} {(-o)} {(errexit)})
    (command.FuncDef
      name: compare-opcodes
      body: 
        (command.BraceGroup
          children: [
            (command.Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair
                  lhs: (lhs_expr.LhsName name:pat)
                  op: Equal
                  rhs: 
                    {
                      (SQ 
                        <
'self.emit|self.unaryOp|self.binaryOp|self._nameOp|self._implicitNameOp|INPLACE|CALL_FUNCTION'
                        >
                      )
                    }
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {(egrep)} {(DQ ($ VSub_DollarName '$pat'))} {(compiler2/pycodegen.py)})
                (C {(egrep)} {(-o)} {(SQ <'[A-Z][A-Z_]+'>)})
                (C {(sort)})
                (command.SimpleCommand
                  words: [{(uniq)}]
                  redirects: [
                    (redir.Redir
                      op: <Redir_Great '>'>
                      fd: 16777215
                      arg_word: {(_tmp/opcodes-emitted.txt)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (command.SimpleCommand
              words: [
                {(python2)}
                {(-c)}
                {
                  (SQ <'\n'> <'from compiler2 import opcode\n'> <'names = sorted(opcode.opmap)\n'> 
                    <'for n in names:\n'> <'  print(n)\n'>
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {(_tmp/opcodes-defined.txt)}
                )
              ]
              more_env: [(env_pair name:PYTHONPATH val:{(.)})]
            )
            (command.AndOr
              ops: [Op_DPipe]
              children: [
                (command.Pipeline
                  children: [
                    (C {(diff)} {(-u)} 
                      (word.BracedWordTree
                        parts: [
                          (_tmp/opcodes-)
                          (word_part.BracedTuple
                            words: [{(defined)} {(emitted)}]
                          )
                          (.txt)
                        ]
                      )
                    )
                    (C {(tee)} {(_tmp/opcode-diff.txt)})
                  ]
                  negated: F
                )
                (C {(true)})
              ]
            )
            (command.Pipeline
              children: [
                (C {(grep)} {(SQ <'^+'>)} {(_tmp/opcode-diff.txt)})
                (C {(grep)} {(-v)} {(SLICE)})
              ]
              negated: F
            )
            (C {(wc)} {(-l)} 
              (word.BracedWordTree
                parts: [(_tmp/opcodes-) (word_part.BracedTuple words:[{(defined)} {(emitted)}]) (.txt)]
              )
            )
          ]
        )
    )
    (C {(DQ ($ VSub_At '$@'))})
  ]
)