(CommandList
  children: [
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other "[")} {(DQ ($ VSub_Pound "$#"))} {(-ne)} {(3)} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(DQ ("Usage: zip_manifest_creator.sh <regexp> <input zip> <output manifest>"))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 71]
        )
      ]
      spids: [-1 85]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:REGEX)
          op: Equal
          rhs: {(DQ ($ VSub_Number "$1"))}
          spids: [88]
        )
      ]
      spids: [88]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:INPUT_ZIP)
          op: Equal
          rhs: {(DQ ($ VSub_Number "$2"))}
          spids: [93]
        )
      ]
      spids: [93]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OUTPUT_MANIFEST)
          op: Equal
          rhs: {(DQ ($ VSub_Number "$3"))}
          spids: [98]
        )
      ]
      spids: [98]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:RUNFILES)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name RUNFILES>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_ColonHyphen
                    arg_word: {($ VSub_Number "$0") (.runfiles)}
                  )
                spids: [105 110]
              )
            }
          spids: [104]
        )
      ]
      spids: [104]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:ZIPPER)
          op: Equal
          rhs: {($ VSub_Name "$RUNFILES") (/) (Lit_Other "*") (/tools/zip/zipper/zipper)}
          spids: [116]
        )
      ]
      spids: [116]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(KW_Bang "!")} {(-x)} {($ VSub_Name "$ZIPPER")} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ZIPPER)
                  op: Equal
                  rhs: {($ VSub_Name "$RUNFILES") (/third_party/ijar/zipper)}
                  spids: [142]
                )
              ]
              spids: [142]
            )
          ]
          spids: [-1 135]
        )
      ]
      spids: [-1 146]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: 
                (C {(Lit_Other "[")} {(KW_Bang "!")} {(-x)} {($ VSub_Name "$ZIPPER")} {(Lit_Other "]")})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (C {(echo)} {(DQ ("zip_manifest_creator could not find zipper executable"))})
            (C {(exit)} {(1)})
          ]
          spids: [-1 161]
        )
      ]
      spids: [-1 175]
    )
    (Pipeline
      children: [
        (C {($ VSub_Name "$ZIPPER")} {(v)} {(DQ ($ VSub_Name "$INPUT_ZIP"))})
        (C {(cut)} {(-d)} {(SQ <" ">)} {(-f3)})
        (C {(grep)} {(-v)} {(EscapedLiteralPart token:<Lit_EscapedChar "\\/">) (Lit_Other "$")})
        (SimpleCommand
          words: [{(grep)} {(-x)} {(DQ ($ VSub_Name "$REGEX"))}]
          redirects: [
            (Redir
              op_id: Redir_Great
              fd: -1
              arg_word: {(DQ ($ VSub_Name "$OUTPUT_MANIFEST"))}
              spids: [225]
            )
          ]
        )
      ]
      negated: False
    )
    (C {(exit)} {(0)})
  ]
)