(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: F
                      )
                    ]
                  )
                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
      ops: [Op_DPipe]
      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]
        )
      ]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$OUTPUT_DIR'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} 
              {(Lit_Other ']')}
            )
          ]
          action: [
            (AndOr
              ops: [Op_DPipe]
              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]
                )
              ]
            )
          ]
          spids: [16777215 237]
        )
      ]
      spids: [16777215 261]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [(C {(docker)} {(rm)} {(-f)} {($ VSub_Name '$CONTAINER_NAME')}) (C {(true)})]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$FAILED'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )} 
              {(Lit_Other ']')}
            )
          ]
          action: [(ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})]
          spids: [16777215 296]
        )
      ]
      spids: [16777215 303]
    )
  ]
)