(command.CommandList
  children: [
    (C {(Id.KW_Set set)} {(-o)} {(nounset)})
    (C {(Id.KW_Set set)} {(-o)} {(pipefail)})
    (C {(Id.KW_Set set)} {(-o)} {(errexit)})
    (command.ShFunction
      name: filter-py
      body: 
        (command.BraceGroup
          children: [
            (C {(grep)} {(-E)} {(-v)} 
              {(SQ (Token id:Id.Lit_Chars val:'__init__.py$|_test.py$' span_id:52))}
            )
          ]
        )
    )
    (command.ShFunction
      name: oil-osh-files
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (command.BraceGroup
                  children: [
                    (command.Sentence
                      child: 
                        (C {(ls)} 
                          (word.BracedTree
                            parts: [
                              (word_part.BracedTuple
                                words: [{(bin)} {(osh)} {(core)}]
                              )
                              (/)
                              (Id.Lit_Star '*')
                              (.py)
                            ]
                          ) {(native/) (Id.Lit_Star '*') (.c)} 
                          (word.BracedTree
                            parts: [(osh/) (word_part.BracedTuple words:[{(osh)} {(types)}]) (.asdl)]
                          ) {(core/runtime.asdl)}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:96)
                    )
                  ]
                )
                (C {(filter-py)})
                (C {(grep)} {(-E)} {(-v)} 
                  {(SQ (Token id:Id.Lit_Chars val:'_gen.py$|test_lib.py' span_id:114))}
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: asdl-cloc
      body: 
        (command.BraceGroup
          children: [
            (C {(python)} {(-c)} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:138) 
                  (Token id:Id.Lit_Chars val:'import sys\n' span_id:139) (Token id:Id.Lit_Chars val:'\n' span_id:140) (Token id:Id.Lit_Chars val:'total = 0\n' span_id:141) 
                  (Token
                    id: Id.Lit_Chars
                    val: 'for path in sys.argv[1:]:\n'
                    span_id: 142
                  ) (Token id:Id.Lit_Chars val:'  num_lines = 0\n' span_id:143) 
                  (Token
                    id: Id.Lit_Chars
                    val: '  with open(path) as f:\n'
                    span_id: 144
                  ) (Token id:Id.Lit_Chars val:'    for line in f:\n' span_id:145) 
                  (Token
                    id: Id.Lit_Chars
                    val: '      line = line.strip()\n'
                    span_id: 146
                  ) (Token id:Id.Lit_Chars val:'      if not line or line.startswith("--"):\n' span_id:147) 
                  (Token id:Id.Lit_Chars val:'        continue\n' span_id:148) (Token id:Id.Lit_Chars val:'      num_lines += 1\n' span_id:149) 
                  (Token id:Id.Lit_Chars val:'\n' span_id:150) (Token id:Id.Lit_Chars val:'  print "%5d %s" % (num_lines, path)\n' span_id:151) 
                  (Token id:Id.Lit_Chars val:'  total += num_lines\n' span_id:152) (Token id:Id.Lit_Chars val:'\n' span_id:153) 
                  (Token
                    id: Id.Lit_Chars
                    val: 'print "%5d %s" % (total, "total")\n'
                    span_id: 154
                  )
                )
              } {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: oil-osh-cloc
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: 'OIL AND OSH (non-blank non-comment lines)'
                    span_id: 174
                  )
                )
              }
            )
            (C {(echo)})
            (command.Pipeline
              children: [
                (C {(oil-osh-files)})
                (C {(xargs)} {(cloc)} {(--quiet)} {(DQ ($ Id.VSub_At '$@'))})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} 
              {
                (SQ 
                  (Token
                    id: Id.Lit_Chars
                    val: 'ASDL SCHEMAS (non-blank non-comment lines)'
                    span_id: 212
                  )
                )
              }
            )
            (C {(asdl-cloc)} {(osh/osh.asdl)} {(core/runtime.asdl)})
          ]
        )
    )
    (command.ShFunction
      name: all
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'BUILD AUTOMATION' span_id:241))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [
                      (build/)
                      (Id.Lit_Star '*')
                      (.)
                      (word_part.BracedTuple words:[{(mk)} {(sh)} {(py)}])
                    ]
                  ) {(Makefile)} {(Id.Lit_Star '*') (.mk)} {(configure)} {(install)}
                )
                (C {(filter-py)})
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'TEST AUTOMATION' span_id:288))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [
                      (test/)
                      (Id.Lit_Star '*')
                      (.)
                      (word_part.BracedTuple words:[{(sh)} {(py)} {(R)}])
                    ]
                  )
                )
                (C {(filter-py)})
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'RELEASE AUTOMATION' span_id:325))})
            (command.Pipeline
              children: [(C {(wc)} {(-l)} {(scripts/release.sh)}) (C {(sort)} {(--numeric)})]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:BENCHMARKS span_id:349))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [
                      (benchmarks/)
                      (Id.Lit_Star '*')
                      (.)
                      (word_part.BracedTuple words:[{(sh)} {(py)} {(R)}])
                    ]
                  )
                )
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'SPEC TESTS' span_id:382))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} {(spec/) (Id.Lit_Star '*') (.test.sh)})
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'GOLD TESTS' span_id:408))})
            (command.Pipeline
              children: [(C {(wc)} {(-l)} {(gold/) (Id.Lit_Star '*') (.sh)}) (C {(sort)} {(--numeric)})]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:ASDL span_id:434))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [
                      (asdl/)
                      (word_part.BracedTuple
                        words: [{(asdl_) (Id.Lit_Star '*')} {(const)} {(py_meta)} {(encode)} {(format)}]
                      )
                      (.py)
                    ]
                  )
                )
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'CODE GENERATORS' span_id:471))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} {(asdl/gen_) (Id.Lit_Star '*') (.py)} 
                  {(Id.Lit_Star '*') (/) (Id.Lit_Star '*') (_gen.py)}
                )
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'GENERATED CODE' span_id:502))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [
                      (_devbuild/gen/)
                      (Id.Lit_Star '*')
                      (.)
                      (word_part.BracedTuple words:[{(py)} {(h)}])
                    ]
                  )
                )
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:TOOLS span_id:533))})
            (command.Pipeline
              children: [
                (C {(ls)} {(tools/) (Id.Lit_Star '*') (.py)})
                (C {(filter-py)})
                (C {(xargs)} {(wc)} {(-l)})
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:WEB span_id:569))})
            (command.Pipeline
              children: [
                (C {(ls)} {(web/) (Id.Lit_Star '*') (.js)} 
                  (word.BracedTree
                    parts: [
                      (web/)
                      (Id.Lit_Star '*')
                      (/)
                      (Id.Lit_Star '*')
                      (.)
                      (word_part.BracedTuple words:[{(js)} {(py)}])
                    ]
                  )
                )
                (C {(xargs)} {(wc)} {(-l)})
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'OTHER UNIT TESTS' span_id:612))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [
                      (word_part.BracedTuple
                        words: [{(build)} {(test)} {(asdl)} {(tools)}]
                      )
                      (/)
                      (Id.Lit_Star '*')
                      (_test.py)
                    ]
                  )
                )
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'OIL UNIT TESTS' span_id:647))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [
                      (word_part.BracedTuple
                        words: [{(osh)} {(core)} {(native)} {(tools)}]
                      )
                      (/)
                      (Id.Lit_Star '*')
                      (_test.py)
                    ]
                  )
                )
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'OIL AND OSH' span_id:682))})
            (command.Pipeline
              children: [(C {(oil-osh-files)}) (C {(xargs)} {(wc)} {(-l)}) (C {(sort)} {(--numeric)})]
              negated: F
            )
            (C {(echo)})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:708)
            )
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:DOCS span_id:719))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} {(README.md)} {(doc/) (Id.Lit_Star '*')})
                (C {(sort)} {(--numeric)})
              ]
              negated: F
            )
            (C {(echo)})
          ]
        )
    )
    (command.ShFunction
      name: parser
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'AST and IDs' span_id:757))})
            (command.Pipeline
              children: [(C {(wc)} {(-l)} {(osh/osh.asdl)} {(core/id_kind.py)}) (C {(sort)} {(-n)})]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'Lexer / Parser' span_id:783))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [
                      (osh/)
                      (word_part.BracedTuple
                        words: [{(Id.Lit_Star '*') (_parse.py)} {(lex.py)} {(parse_lib.py)}]
                      )
                    ]
                  ) {(core/word.py)}
                )
                (C {(sort)} {(-n)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'Compiler / Middle End' span_id:817))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [(core/) (word_part.BracedTuple words:[{(braces)} {(word_compile)}]) (.py)]
                  )
                )
                (C {(sort)} {(-n)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:'Common Algorithms' span_id:847))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [(core/) (word_part.BracedTuple words:[{(tdop)} {(lexer)}]) (.py)]
                  )
                )
                (C {(sort)} {(-n)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:Utilities span_id:877))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [(core/) (word_part.BracedTuple words:[{(alloc)} {(ui)} {(reader)}]) (.py)]
                  )
                )
                (C {(sort)} {(-n)})
              ]
              negated: F
            )
            (C {(echo)})
          ]
        )
    )
    (command.ShFunction
      name: parser-port
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} {(core/tdop.py)} {(osh/) (Id.Lit_Star '*') (_parse.py)})
                (C {(sort)} {(-n)})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: runtime
      body: 
        (command.BraceGroup
          children: [
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:Runtime span_id:951))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [(core/) (word_part.BracedTuple words:[{(process)} {(state)}]) (.py)]
                  ) {(core/runtime.asdl)}
                )
                (C {(sort)} {(-n)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:Evaluators span_id:987))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [
                      (core/)
                      (Id.Lit_Star '*')
                      (_)
                      (word_part.BracedTuple words:[{(exec)} {(eval)}])
                      (.py)
                    ]
                  )
                )
                (C {(sort)} {(-n)})
              ]
              negated: F
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:Builtins span_id:1019))})
            (C {(wc)} {(-l)} 
              (word.BracedTree
                parts: [(core/) (word_part.BracedTuple words:[{(builtin)} {(test_builtin)}]) (.py)]
              )
            )
            (C {(echo)})
            (C {(echo)} {(SQ (Token id:Id.Lit_Chars val:Libraries span_id:1043))})
            (command.Pipeline
              children: [
                (C {(wc)} {(-l)} 
                  (word.BracedTree
                    parts: [
                      (core/)
                      (word_part.BracedTuple
                        words: [{(args)} {(glob_)} {(legacy)} {(libstr)}]
                      )
                      (.py)
                    ]
                  )
                )
                (C {(sort)} {(-n)})
              ]
              negated: F
            )
            (C {(echo)})
          ]
        )
    )
    (command.ShFunction
      name: instructions
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'bin=') (_tmp/oil)})
            (command.Pipeline
              children: [
                (C {(objdump)} {(-d)} {($ Id.VSub_DollarName '$bin')})
                (C {(cut)} {(-f3)})
                (C {(grep)} {(-oE)} {(DQ ('^[a-z]+'))})
                (C {(sort)})
                (C {(uniq)} {(-c)})
                (C {(sort)} {(-n)})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: hist
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [(C {(sort)}) (C {(uniq)} {(-c)}) (C {(sort)} {(-n)})]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: stdlib-imports
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(oil-osh-files)})
                (C {(xargs)} {(grep)} {(--no-filename)} 
                  {(SQ (Token id:Id.Lit_Chars val:'^import' span_id:1179))}
                )
                (C {(hist)})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: imports
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(oil-osh-files)})
                (C {(xargs)} {(grep)} {(--no-filename)} {(-w)} {(import)})
                (C {(hist)})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: top-level
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(grep)} {(SQ (Token id:Id.Lit_Chars val:'^[a-zA-Z]' span_id:1230))} 
                  (word.BracedTree
                    parts: [(word_part.BracedTuple words:[{(core)} {(osh)}]) (/) (Id.Lit_Star '*') (.py)]
                  )
                )
                (C {(grep)} {(-v)} {(SQ (Token id:Id.Lit_Chars val:_test.py span_id:1251))})
                (C {(egrep)} {(-v)} 
                  {(SQ (Token id:Id.Lit_Chars val:':import|from|class|def' span_id:1263))}
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: _python-symbols
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'main=') ($ Id.VSub_Number '$1')})
            (C {(local)} {(Id.Lit_VarLike 'name=') ($ Id.VSub_Number '$2')})
            (C {(local)} {(Id.Lit_VarLike 'out=') (_tmp/) (${ Id.VSub_Name name) (-python-symbols.txt)})
            (command.Pipeline
              children: [
                (command.Simple
                  words: [{($ Id.VSub_DollarName '$main')}]
                  more_env: [(env_pair name:CALLGRAPH val:{(1)} spids:[1303])]
                )
                (C {(tee)} {($ Id.VSub_DollarName '$out')})
              ]
              negated: F
            )
            (C {(wc)} {(-l)} {($ Id.VSub_DollarName '$out')})
            (C {(echo)})
            (C {(echo)} {(DQ ('Wrote ') ($ Id.VSub_DollarName '$out'))})
          ]
        )
    )
    (command.ShFunction
      name: oil-python-symbols
      body: (command.BraceGroup children:[(C {(_python-symbols)} {(bin/oil.py)} {(oil)})])
    )
    (command.ShFunction
      name: opy-python-symbols
      body: (command.BraceGroup children:[(C {(_python-symbols)} {(bin/opy_.py)} {(opy)})])
    )
    (command.ShFunction
      name: old-style-classes
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(oil-python-symbols)})
                (C {(grep)} {(-v)} {(SQ (Token id:Id.Lit_Chars val:'<' span_id:1385))})
              ]
              negated: F
            )
          ]
        )
    )
    (C {(DQ ($ Id.VSub_At '$@'))})
  ]
)