(CommandList
  children: [
    (C {(set)} {(-ex)})
    (C {(cd)} 
      {
        (CommandSubPart
          command_list: (CommandList children:[(C {(dirname)} {($ VSub_Number "$0")})])
          left_token: <Left_CommandSub "$(">
          spids: [36 40]
        ) (/..)
      }
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:git_root)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(pwd)})])
                left_token: <Left_CommandSub "$(">
                spids: [44 46]
              )
            }
          spids: [43]
        )
      ]
      spids: [43]
    )
    (C {(cd)} {(-)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:DOCKER_IMAGE_NAME)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [(C {(basename)} {($ VSub_Name "$DOCKERFILE_DIR")})]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [57 61]
              ) (_) 
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(sha1sum)} {($ VSub_Name "$DOCKERFILE_DIR") (/Dockerfile)})
                          (C {(cut)} {(-f1)} {(-d) (EscapedLiteralPart token:<Lit_EscapedChar "\\ ">)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [63 77]
              )
            }
          spids: [56]
        )
      ]
      spids: [56]
    )
    (C {(docker)} {(build)} {(-t)} {($ VSub_Name "$DOCKER_IMAGE_NAME")} {($ VSub_Name "$DOCKERFILE_DIR")})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CCACHE_DIR)
          op: Equal
          rhs: {(/tmp/protobuf-ccache)}
          spids: [97]
        )
      ]
      spids: [97]
    )
    (C {(mkdir)} {(-p)} {($ VSub_Name "$CCACHE_DIR")})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:CONTAINER_NAME)
          op: Equal
          rhs: 
            {
              (DQ (build_and_run_docker_) 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(uuidgen)})])
                  left_token: <Left_CommandSub "$(">
                  spids: [113 115]
                )
              )
            }
          spids: [110]
        )
      ]
      spids: [110]
    )
    (AndOr
      children: [
        (C {(docker)} {(run)} {(DQ ($ VSub_At "$@"))} {(-e)} 
          {(Lit_VarLike "CCACHE_DIR=") ($ VSub_Name "$CCACHE_DIR")} {(-e)} {(Lit_VarLike "EXTERNAL_GIT_ROOT=") (DQ (/var/local/jenkins/protobuf))} {(-e)} 
          {(Lit_VarLike "TEST_SET=") (DQ ($ VSub_Name "$TEST_SET"))} {(-e)} 
          {(Lit_VarLike "THIS_IS_REALLY_NEEDED=") 
            (SQ <"see https://github.com/docker/docker/issues/14203 for why docker is awful">)
          } {(-v)} {(DQ ($ VSub_Name "$git_root") (":/var/local/jenkins/protobuf:ro"))} {(-v)} 
          {($ VSub_Name "$CCACHE_DIR") (Lit_Other ":") ($ VSub_Name "$CCACHE_DIR")} {(-w)} {(/var/local/git/protobuf)} {(--name) (Lit_Other "=") ($ VSub_Name "$CONTAINER_NAME")} 
          {($ VSub_Name "$DOCKER_IMAGE_NAME")} {(bash)} {(-l)} {(DQ (/var/local/jenkins/protobuf/) ($ VSub_Name "$DOCKER_RUN_SCRIPT"))}
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:FAILED) op:Equal rhs:{(DQ (true))} spids:[212])]
          spids: [212]
        )
      ]
      op_id: Op_DPipe
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$OUTPUT_DIR"))} {(KW_Bang "!") (Lit_Other "=")} {(DQ )} 
              {(Lit_Other "]")}
            )
          ]
          action: [
            (AndOr
              children: [
                (C {(docker)} {(cp)} 
                  {
                    (DQ ($ VSub_Name "$CONTAINER_NAME") (":/var/local/git/protobuf/") 
                      ($ VSub_Name "$OUTPUT_DIR")
                    )
                  } {(DQ ($ VSub_Name "$git_root"))}
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:FAILED)
                      op: Equal
                      rhs: {(DQ (true))}
                      spids: [256]
                    )
                  ]
                  spids: [256]
                )
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [-1 237]
        )
      ]
      spids: [-1 261]
    )
    (AndOr
      children: [(C {(docker)} {(rm)} {(-f)} {($ VSub_Name "$CONTAINER_NAME")}) (C {(true)})]
      op_id: Op_DPipe
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$FAILED"))} {(KW_Bang "!") (Lit_Other "=")} {(DQ )} 
              {(Lit_Other "]")}
            )
          ]
          action: [(C {(exit)} {(1)})]
          spids: [-1 296]
        )
      ]
      spids: [-1 303]
    )
  ]
)