(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-e>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [
                    (command.Simple
                      words: [{<command>} {<-v>} {<curl>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_AndGreat '&>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  negated: T
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (command.Simple
              words: [{<echo>} {(SQ <'error: "curl" not found!'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [22 37]
        )
      ]
    )
    (command.ShFunction
      name: usage
      body: 
        (BraceGroup
          children: [
            (C {<echo>} {(DQ <'usage: '> ($ Id.VSub_Number '$0') <' dir image[:tag][@image-id] ...'>)})
            (C {<echo>} {(DQ <'   ie: '> ($ Id.VSub_Number '$0') <' /tmp/hello-world hello-world'>)})
            (C {<echo>} {(DQ <'       '> ($ Id.VSub_Number '$0') <' /tmp/debian-jessie debian:jessie'>)})
            (C {<echo>} 
              {
                (DQ <'       '> ($ Id.VSub_Number '$0') 
                  <
' /tmp/old-hello-world hello-world@ef872312fe1bbc5e05aae626791a47ee9b032efa8f3bda39cc0be7b56bfe59b9'
                  >
                )
              }
            )
            (C {<echo>} 
              {
                (DQ <'       '> ($ Id.VSub_Number '$0') 
                  <
' /tmp/old-debian debian:latest@f6fab3b798be3174f45aa1eb731f8182705555f89c9026d8c1ef230cbf8301dd'
                  >
                )
              }
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>})
                (command.ControlFlow
                  token: <Id.ControlFlow_Exit exit>
                  arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:dir)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_Number '$1'))}
          spids: [130]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<shift>})
        (command.Simple
          words: [{<usage>} {<1>}]
          redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} {<-a>} 
          {(DQ ($ Id.VSub_DollarName '$dir'))} {<Id.Lit_RBracket ']'>}
        )
        (command.Simple
          words: [{<usage>} {<2>}]
          redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
          do_fork: T
        )
      ]
    )
    (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$dir'))})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:images)
          op: assign_op.Equal
          rhs: {(sh_array_literal left:<Id.Op_LParen _>)}
          spids: [187]
        )
      ]
    )
    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$dir')) <'/tags-'> <Id.Lit_Star '*'> <.tmp>})
    (command.WhileUntil
      keyword: <Id.KW_While while>
      cond: [
        (command.Sentence
          child: 
            (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>})
          terminator: <Id.Op_Semi _>
        )
      ]
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:imageTag)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [222]
                )
              ]
            )
            (C {<shift>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:image)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name imageTag>
                          suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPercent arg_word:{<'[:@]*'>})
                        )
                      )
                    }
                  spids: [231]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:tag)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name imageTag>
                          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{<'*:'>})
                        )
                      )
                    }
                  spids: [241]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:imageId)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name tag>
                          suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{<'*@'>})
                        )
                      )
                    }
                  spids: [251]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$imageId'))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$tag'))} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:imageId)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [278]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$tag'))} 
                  {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$imageTag'))} {<Id.Lit_RBracket ']'>}
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:tag)
                      op: assign_op.Equal
                      rhs: {(SQ <latest>)}
                      spids: [298]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:tag)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name tag>
                          suffix_op: (suffix_op.Unary op_id:Id.VOp1_Percent arg_word:{<'@*'>})
                        )
                      )
                    }
                  spids: [304]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:imageFile)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name image>
                          suffix_op: 
                            (suffix_op.PatSub
                              pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\/'>)}
                              replace: {<_>}
                              replace_mode: Id.Lit_Slash
                            )
                        )
                      )
                    }
                  spids: [315]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:token)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (C {<curl>} {<-sSL>} {<-o>} {<'/dev/null'>} {<-D->} {<-H>} 
                                  {(SQ <'X-Docker-Token: true'>)} {(DQ <'https://index.docker.io/v1/repositories/'> ($ Id.VSub_DollarName '$image') <'/images'>)}
                                )
                                (C {<tr>} {<-d>} {(SQ <'\\r'>)})
                                (C {<awk>} {<-F>} {(SQ <': *'>)} 
                                  {(SQ <'$1 == "X-Docker-Token" { print $2 }'>)}
                                )
                              ]
                              negated: F
                            )
                        )
                      )
                    }
                  spids: [332]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$imageId'))} 
                          {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:imageId)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<curl>} {<-sSL>} {<-H>} 
                                      {(DQ <'Authorization: Token '> ($ Id.VSub_DollarName '$token'))} 
                                      {
                                        (DQ <'https://registry-1.docker.io/v1/repositories/'> 
                                          ($ Id.VSub_DollarName '$image') <'/tags/'> ($ Id.VSub_DollarName '$tag')
                                        )
                                      }
                                    )
                                )
                              )
                            }
                          spids: [401]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:imageId)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: <Id.VSub_Name imageId>
                                  suffix_op: 
                                    (suffix_op.PatSub
                                      pat: 
                                        {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>)}
                                      replace: {}
                                      replace_mode: Id.Lit_Slash
                                    )
                                )
                              )
                            }
                          spids: [425]
                        )
                      ]
                    )
                  ]
                  spids: [385 398]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ancestryJson)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<curl>} {<-sSL>} {<-H>} 
                              {(DQ <'Authorization: Token '> ($ Id.VSub_DollarName '$token'))} {(DQ <'https://registry-1.docker.io/v1/images/'> ($ Id.VSub_DollarName '$imageId') <'/ancestry'>)}
                            )
                        )
                      )
                    }
                  spids: [441]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} 
                          {
                            (DQ 
                              (braced_var_sub
                                token: <Id.VSub_Name ancestryJson>
                                suffix_op: 
                                  (suffix_op.Slice
                                    begin: {<Id.Lit_Digits 0>}
                                    length: {<Id.Lit_Digits 1>}
                                  )
                              )
                            )
                          } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(SQ <'['>)} {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ <'error: /v1/images/'> ($ Id.VSub_DollarName '$imageId') 
                            <'/ancestry returned something unexpected:'>
                          )
                        }
                      ]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ <'  '> ($ Id.VSub_DollarName '$ancestryJson'))}]
                      redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [464 488]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IFS)
                  op: assign_op.Equal
                  rhs: {(SQ <','>)}
                  spids: [523]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ancestry)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (sh_array_literal
                        left: <Id.Op_LParen _>
                        words: [
                          {
                            (braced_var_sub
                              token: <Id.VSub_Name ancestryJson>
                              suffix_op: 
                                (suffix_op.PatSub
                                  pat: 
                                    {<'['> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\['>) 
                                      (word_part.EscapedLiteral
                                        token: <Id.Lit_EscapedChar '\\]'>
                                      ) <' '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <']'>
                                    }
                                  replace: {}
                                  replace_mode: Id.Lit_Slash
                                )
                            )
                          }
                        ]
                      )
                    }
                  spids: [529]
                )
              ]
            )
            (C {<unset>} {<IFS>})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {<Id.Lit_LBracket '['>} {<-s>} 
                          {
                            (DQ ($ Id.VSub_DollarName '$dir') <'/tags-'> 
                              ($ Id.VSub_DollarName '$imageFile') <.tmp>
                            )
                          } {<Id.Lit_RBracket ']'>}
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [{<echo>} {<-n>} {(SQ <', '>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: 
                            {
                              (DQ ($ Id.VSub_DollarName '$dir') <'/tags-'> 
                                ($ Id.VSub_DollarName '$imageFile') <.tmp>
                              )
                            }
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [554 570]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:images)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (sh_array_literal
                            left: <Id.Op_LParen _>
                            words: [
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: <Id.VSub_Name images>
                                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                                  )
                                )
                              }
                              {(DQ ($ Id.VSub_DollarName '$image'))}
                            ]
                          )
                        }
                      spids: [594]
                    )
                  ]
                )
              ]
            )
            (command.Simple
              words: [
                {<echo>}
                {<-n>}
                {(SQ <'"'>) (DQ ($ Id.VSub_DollarName '$tag')) (SQ <'": "'>) 
                  (DQ ($ Id.VSub_DollarName '$imageId')) (SQ <'"'>)
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: 
                    {
                      (DQ ($ Id.VSub_DollarName '$dir') <'/tags-'> ($ Id.VSub_DollarName '$imageFile') 
                        <.tmp>
                      )
                    }
                )
              ]
              do_fork: T
            )
            (C {<echo>} 
              {
                (DQ <'Downloading \''> ($ Id.VSub_DollarName '$imageTag') <'\' ('> 
                  (braced_var_sub
                    token: <Id.VSub_Name ancestry>
                    prefix_op: (Id.VSub_Pound)
                    bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                  ) <' layers)...'>
                )
              }
            )
            (command.ForEach
              iter_name: imageId
              iter_words: [
                {
                  (DQ 
                    (braced_var_sub
                      token: <Id.VSub_Name ancestry>
                      bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
                    )
                  )
                }
              ]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (C {<mkdir>} {<-p>} 
                      {(DQ ($ Id.VSub_DollarName '$dir') <'/'> ($ Id.VSub_DollarName '$imageId'))}
                    )
                    (command.Simple
                      words: [{<echo>} {(SQ <1.0>)}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: 
                            {
                              (DQ ($ Id.VSub_DollarName '$dir') <'/'> ($ Id.VSub_DollarName '$imageId') 
                                <'/VERSION'>
                              )
                            }
                        )
                      ]
                      do_fork: T
                    )
                    (C {<curl>} {<-sSL>} {<-H>} 
                      {(DQ <'Authorization: Token '> ($ Id.VSub_DollarName '$token'))} {(DQ <'https://registry-1.docker.io/v1/images/'> ($ Id.VSub_DollarName '$imageId') <'/json'>)} {<-o>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$dir') <'/'> ($ Id.VSub_DollarName '$imageId') 
                          <'/json'>
                        )
                      }
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Sentence
                              child: 
                                (C {<Id.Lit_LBracket '['>} {<-f>} 
                                  {
                                    (DQ ($ Id.VSub_DollarName '$dir') <'/'> 
                                      ($ Id.VSub_DollarName '$imageId') <'/layer.tar'>
                                    )
                                  } {<Id.Lit_RBracket ']'>}
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'skipping existing '> 
                                  (braced_var_sub
                                    token: <Id.VSub_Name imageId>
                                    suffix_op: 
                                      (suffix_op.Slice
                                        begin: {<Id.Lit_Digits 0>}
                                        length: {<Id.Lit_Digits 12>}
                                      )
                                  )
                                )
                              }
                            )
                            (command.ControlFlow
                              token: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [751 767]
                        )
                      ]
                    )
                    (C {<curl>} {<-SL>} {<--progress>} {<-H>} 
                      {(DQ <'Authorization: Token '> ($ Id.VSub_DollarName '$token'))} {(DQ <'https://registry-1.docker.io/v1/images/'> ($ Id.VSub_DollarName '$imageId') <'/layer'>)} {<-o>} 
                      {
                        (DQ ($ Id.VSub_DollarName '$dir') <'/'> ($ Id.VSub_DollarName '$imageId') 
                          <'/layer.tar'>
                        )
                      }
                    )
                  ]
                )
            )
            (C {<echo>})
          ]
        )
    )
    (command.Simple
      words: [{<echo>} {<-n>} {(SQ <'{'>)}]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(DQ ($ Id.VSub_DollarName '$dir') <'/repositories'>)}
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:firstImage)
          op: assign_op.Equal
          rhs: {<1>}
          spids: [849]
        )
      ]
    )
    (command.ForEach
      iter_name: image
      iter_words: [
        {
          (DQ 
            (braced_var_sub
              token: <Id.VSub_Name images>
              bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
            )
          )
        }
      ]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:imageFile)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (braced_var_sub
                          token: <Id.VSub_Name image>
                          suffix_op: 
                            (suffix_op.PatSub
                              pat: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\/'>)}
                              replace: {<_>}
                              replace_mode: Id.Lit_Slash
                            )
                        )
                      )
                    }
                  spids: [871]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$firstImage'))} 
                  {<Id.Lit_RBracket ']'>}
                )
                (command.Simple
                  words: [{<echo>} {<-n>} {(SQ <','>)}]
                  redirects: [
                    (redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName '$dir') <'/repositories'>)}
                    )
                  ]
                  do_fork: T
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:firstImage)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [914]
                )
              ]
            )
            (command.Simple
              words: [
                {<echo>}
                {<-n>}
                {
                  (single_quoted
                    left: <Id.Left_SingleQuoteC '$\''>
                    tokens: [<Id.Char_OneChar '\\n'> <Id.Char_OneChar '\\t'>]
                  )
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$dir') <'/repositories'>)}
                )
              ]
              do_fork: T
            )
            (command.Simple
              words: [
                {<echo>}
                {<-n>}
                {(SQ <'"'>) (DQ ($ Id.VSub_DollarName '$image')) (SQ <'": { '>) 
                  (DQ 
                    (command_sub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (C {<cat>} 
                          {
                            (DQ ($ Id.VSub_DollarName '$dir') <'/tags-'> 
                              ($ Id.VSub_DollarName '$imageFile') <.tmp>
                            )
                          }
                        )
                    )
                  ) (SQ <' }'>)
                }
              ]
              redirects: [
                (redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName '$dir') <'/repositories'>)}
                )
              ]
              do_fork: T
            )
          ]
        )
    )
    (command.Simple
      words: [
        {<echo>}
        {<-n>}
        {
          (single_quoted
            left: <Id.Left_SingleQuoteC '$\''>
            tokens: [<Id.Char_OneChar '\\n'> <Id.Char_Literals '}'> <Id.Char_OneChar '\\n'>]
          )
        }
      ]
      redirects: [
        (redir
          op: <Id.Redir_DGreat '>>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(DQ ($ Id.VSub_DollarName '$dir') <'/repositories'>)}
        )
      ]
      do_fork: T
    )
    (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$dir')) <'/tags-'> <Id.Lit_Star '*'> <.tmp>})
    (C {<echo>} {(DQ <'Download of images into \''> ($ Id.VSub_DollarName '$dir') <'\' complete.'>)})
    (C {<echo>} {(DQ <'Use something like the following to load the result into a Docker daemon:'>)})
    (C {<echo>} {(DQ <'  tar -cC \''> ($ Id.VSub_DollarName '$dir') <'\' . | docker load'>)})
  ]
)